Importera modul in Python med exempel

⚡ Smart sammanfattning

Importera in Python låter en fil återanvända variabler, funktioner och klasser som definierats i en annan. En modul är helt enkelt en .py-fil, medan ett paket grupperar relaterade moduler i en katalog markerad med en __init__.py-fil.

  • 🔘 Vad är en modul: En modul är en enda .py-fil som innehåller variabler, funktioner eller klasser.
  • ☑️ importera nyckelord: import laddar en hel modul; modulnamn.funktionsnamn anropar dess medlemmar.
  • ✅ Selektiv import: från modulen import name hämtar endast de funktioner eller variabler du behöver.
  • 🧪 alias: importmodulen som alias förkortar långa namn; från modulen importerar * allt.
  • 🛠️ Paket och sökvägar: __init__.py omvandlar en mapp till ett paket; sys.path listar sökplatserna.
  • 🤖 AI-arbetsflöden: Maskininlärningsprojekt importerar NumPy, pandas och PyTorch som moduler.

Importera modul in Python

Avsnitten nedan förklarar moduler, paket, de olika importstilarna och hur absoluta och relativa importer fungerar i Python.

Vad är modulerna i Python?

En modul är en fil med Python kod. Koden kan vara i form av variabler, funktioner eller en definierad klass. Filnamnet blir modulnamnet.

Till exempel, om ditt filnamn är guru99.py, kommer modulnamnet att vara guru99. Med modulfunktionalitet kan du dela upp din kod i olika filer istället för att skriva allt i en fil.

Vad är det Python importera modul?

En fil betraktas som en modul i PythonFör att använda modulen måste du importera den med hjälp av importera nyckelord. Funktionerna eller variablerna som finns i filen kan användas i en annan fil genom att importera modulen. Denna funktion är tillgänglig på andra språk som TypeScript, JavaManus, Java, Ruby, etc.

Hur man skapar och importerar en modul i Python?

Nu ska vi skapa en modul och importera den till en annan fil.

Här är flödet för att skapa och importera modulen som visas på skärmdumpen:

Skapa och importera en modul i Python

Följ stegen som anges för att skapa en modul i Python.

Mappstrukturen som används för att testa koden är följande:

modtest/
	test.py
	display.py	

Steg 1) Skapa en fil och döp den till test.py

Steg 2) Inuti test.py skapa en funktion som heter display_message()

Def display_message():
    return "Welcome to Guru99 Tutorials!"

Steg 3) Skapa nu en annan fil display.py.

Steg 4) Importera modulen test.py-filen inuti display.py, som visas nedan:

import test

När du importerar behöver du inte ange test.py utan bara namnet på filen.

Steg 5) Sedan kan du anropa funktionen display_message() från test.py inuti display.py. Du behöver använda module_name.function_name.

Till exempel test.display_message().

Import test
print(test.display_message())

Steg 6) När du kör display.py får du följande Produktion:

Welcome to Guru99 Tutorials!

Importera en klass i Python

Tidigare har vi sett en enkel modul med en funktion. Här kommer vi att skapa en klass och referera till klassen i en annan fil.

Mappstrukturen för att testa koden är följande:

myproj/
	Car.py
	display.py

Skapa en fil som heter Car.py med följande kod:

Filnamn: Car.py

class Car:
	brand_name = "BMW"
	model = "Z4"
	manu_year = "2020"

	def __init__(self, brand_name, model, manu_year):
		self.brand_name = brand_name
		self.model = model
		self.manu_year = manu_year

	def car_details(self):
		print("Car brand is ", self.brand_name)
		print("Car model is ", self.model)
		print("Car manufacture year is ", self.manu_year)
			
			
	def get_Car_brand(self):
		print("Car brand is ", self.brand_name)

	def get_Car_model(self):
		print("Car model is ", self.model) 

I filen Car.py finns attributen brand_name, model och manu_year. Funktionerna som definieras inuti klassen är car_details(), get_Car_brand(), get_Car_model().

Låt oss nu använda filen Car.py som en modul i en annan fil som heter display.py.

Filnamn: display.py

import Car
car_det = Car.Car("BMW","Z5", 2020)
print(car_det.brand_name)
print(car_det.car_details())
print(car_det.get_Car_brand())
print(car_det.get_Car_model())

Produktion:

BMW
Car brand is  BMW
Car model is  Z5
Car manufacture year is  2020
Car brand is  BMW
Car model is  Z5

Så vi kan komma åt alla variabler och funktioner från Car.py med hjälp av Car-modulen.

Använder från till importmodul

Du kan bara importera en liten del av modulen, dvs. bara de nödvändiga funktionerna och variabelnamnen från modulen istället för att importera hela koden.

När du bara vill importera specifika saker kan du använda nyckelordet "från" för att importera det du vill.

Så syntaxen är

from  module import your function_name , variables,... etc.

Mappstrukturen som används för att testa koden är följande:

modtest/
	test.py
	display.py	

I test.py finns det två funktioner som visas:

Filnamn: test.py

defdisplay_message():
	return "Welcome to Guru99 Tutorials!"
	
def display_message1():
	return "All about Python!"

Nu vill du ha funktionen display_message(). Funktionen eller variabeln som du importerar kan nås direkt enligt nedan:

Filnamn: display.py

from test import display_message
print(display_message())

Produktion:

Welcome to Guru99 Tutorials!

Om du nu råkar använda funktionen display_message1(), kommer den att ge ett felmeddelande om att funktionen inte är definierad enligt nedan:

from test import display_message
print(display_message1())

Produktion:

Traceback (most recent call last):
File "display.py", line 3, in <module>
print(display_message1())
Name Error: name 'display_message1' is not defined

Importerar allt från modulen

Med Import kan du importera hela modulen genom att använda import följt av modulnamnet, dvs. filnamnet eller biblioteket som ska användas.

Syntax:

Import module

Eller genom att använda

from module import *

Mappstrukturen som används för att testa koden är följande:

modtest/
	test.py
	display.py	

Följande är koddetaljerna inuti test.py

my_name = "Guru99"
my_address = "Mumbai"

defdisplay_message():
	return "Welcome to Guru99 Tutorials!"
	
	
def display_message1():
	return "All about Python!"

Använder importmodulen

Genom att bara använda importmodulens namn, för att referera till variabler och funktioner inuti modulen, måste du prefixa dem med modulnamnet.

Exempelvis

Filnamn: display.py

Import test
print(test.display_message())
print(test.display_message1())
print(test.my_name)
print(test.my_address)

Modulnamnet test används för att referera till funktionerna och variablerna i modultestet.

Produktion:

Welcome to Guru99 Tutorials!
All about Python!
Guru99
Mumbai

Använder import *

Låt oss se ett exempel med hjälp av importera *, Använda importera *, är funktionerna och variablerna direkt tillgängliga, som visas i exemplet nedan:

from test import *

print(display_message())
print(display_message1())
print(my_name)
print(my_address)

Produktion:

Welcome to Guru99 Tutorials!
All about Python!
Guru99
Mumbai

Funktionen dir( ).

dir() är en inbyggd funktion i Pythondir() returnerar alla egenskaper och metoder, inklusive det givna objektets inbyggda egenskaper.

Så när dir() används på modulen, kommer den att ge dig de variabler och funktioner som finns inuti modulen.

Här är ett fungerande exempel på dir() på en modul. Vi har en klass som heter Car.py, låt oss importera Car och tilldela den till dir() för att se utdata.

Mappstrukturen för att testa koden kommer att vara följande:

test prop/
	Car.py
	test.py	

Filnamn: Car.py

class Car:
	brand_name = "BMW"
	model = "Z4"
	manu_year = "2020"

	def __init__(self, brand_name, model, manu_year):
		self.brand_name = brand_name
		self.model = model
		self.manu_year = manu_year

	def car_details(self):
		print("Car brand is ", self.brand_name)
		print("Car model is ", self.model)
		print("Car manufacture year is ", self.manu_year)
			
			
	def get_Car_brand(self):
		print("Car brand is ", self.brand_name)

	def get_Car_model(self):
		print("Car model is ", self.model) 

Filnamn: test.py

import Car

class_contents = dir(Car)
print(class_contents)

Utdatan ger oss namnet på klassen och alla funktioner definierade i Car.py.

Du kan också prova att använda dir() på en inbyggd modul tillgänglig i PythonLåt oss försöka detsamma på json modulen som visas i exemplet nedan. Den visar alla egenskaper och metoder som finns tillgängliga i json modul.

Import json
json_details = dir(json)
print(json_details)

Produktion:

['JSONDecodeError', 'JSONDecoder', 'JSONEncoder', '__all__', '__author__', '__bu
iltins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__pac
kage__', '__path__', '__spec__', '__version__', '_default_decoder', '_default_en
coder', 'codecs', 'decoder', 'detect_encoding', 'dump', 'dumps', 'encoder', 'loa
d', 'loads', 'scanner']

Paket

Ett paket är en katalog med alla moduler definierade i den. Att göra en Python Om tolken behandlar det som ett paket, bör din katalog innehålla filen __init__.py. __init__.py gör katalogen till ett paket. Här är layouten för paketet som vi ska arbeta med.

Paket in Python

Namnet på paketet är mittpaketFör att börja arbeta med paketet, skapa en katalog som heter mypackage/. Inuti katalogen skapar du en tom fil som heter __init__.py. Skapa ytterligare 3 filer module1.py, module2.py och module3.py och definiera funktionerna som visas på skärmbilden. Här är detaljerna för module1.py, module2.py och module3.py.

module1.py

def mod1_func1():
print("Welcome to Module1 function1")

def mod1_func2():
print("Welcome to Module1 function2")

def mod1_func3():
print("Welcome to Module1 function3")

module2.py

def mod2_func1():
print("Welcome to Module2 function1")

def mod2_func2():
print("Welcome to Module2 function2")

def mod2_func3():
print("Welcome to Module2 function3")

module3.py

def mod3_func1():
print("Welcome to Module3 function1")

def mod3_func2():
print("Welcome to Module3 function2")

def mod3_func3():
print("Welcome to Module3 function3")

Ocuco-landskapet paket är redo att användas. Anropa nu paketet i någon av dina filer som visas nedan i test.py:

Här importeras mypackage.module1 och får ett aliasnamn som läge1På samma sätt kan du använda de andra modulerna module2.py och module3.py från mypackage.

import mypackage.module1 as mod1

print(mod1.mod1_func1())
print(mod1.mod1_func2())
print(mod1.mod1_func2())

Produktion:

Welcome to Module1 function1
None
Welcome to Module1 function2
None
Welcome to Module1 function2
None

Vi har just demonstrerat paketet med en enkel modul med funktioner inuti. Beroende på ditt projekt kan du också skapa paket som har underpaket, dvs. undermappar som innehåller moduler med definierade klasser.

Python Sökväg för modul

Under utförandet, när Python stöter på importmodulens namn, försöker tolken hitta modulen. Den söker efter modulen i den inbyggda modulistan och sedan i alla kataloger som definierats inuti sys.path.

Sammanfattningsvis gör tolken följande sökning för att hitta modulen:

  1. I din nuvarande katalog.
  2. I den inbyggda modulens lista.
  3. Inuti sys.path-katalogerna.

Du kan få information om sys.path genom att importera sys-modulen och skriva ut sys.path. Det ger dig en lista över kataloger som visas nedan:

importsys
print(sys.path)

Produktion:

['Python Latest\\task2', 'Users\\AppData\\Local\\Programs\\Python\
\Python37\\python37.zip', 'Users\\AppData\\Local\\Programs\\Python\\P
ython37\\DLLs']

Du kan också ändra sökvägen och behålla katalogerna enligt dina krav.

Använder modulalias i importen

Du kan också konvertera modulnamnet till en kortare form genom att ge det ett aliasnamn. Aliaset kan skapas med hjälp av as nyckelord.

Syntax:

import filename as alias name

Mappstrukturen för att testa koden kommer att vara följande:

Mod test/
	test.py
	display.py	

Följande är koden inuti test.py

my_name = "Guru99"
my_address = "Mumbai"

def display_message():
	return "Welcome to Guru99 Tutorials!"	
	
def display_message1():
	return "All about Python!"

Nu ska vi använda ett alias för test.py i display.py

Import test as t

print(t.display_message())
print(t.display_message1())
print(t.my_name)
print(t.my_address)

Aliaset som används för testmodulen är t. Så funktionerna och variablerna från test.py kan refereras till med hjälp av aliaset t.

Produktion:

Welcome to Guru99 Tutorials!
All about Python!
Guru99
Mumbai

Absolut och relativ import i Python

Du vet nu hur man importerar en fil som en modul i en annan fil. Låt oss nu se hur man hanterar de tillgängliga filerna i mappar. Filerna i mapparna kan importeras antingen genom att använda absolut eller relativ import.

Tänk på att du har din projektmappstruktur, som visas nedan:

Absolut och relativ import i Python

Rotmappen är myproject/. Den har två undermappar, paket1 och paket2.

Mappen package1 har två moduler, module1.py och module2.py.

Mappen paket2 har en klass myclass.py, ett underpaket subpkg med modul3.py och sista modul4.py.

  • I module1.py finns en funktion som heter myfunc1.
  • I module2.py finns en funktion som heter myfunc2.
  • I module3.py finns en funktion som heter myfunc3.
  • I module4.py finns en funktion som heter myfunc4.

Använder absolut import

För absoluta importer måste du lägga till hela sökvägen till din modul direkt från projektets rotmapp.

Låt oss nu se hur man använder absoluta importer för att referera till de funktioner som finns i var och en av modulerna.

För att arbeta med funktionen myfunc1 måste du importera den enligt följande:

from package1.module1  import  myfunc1
or
from package1 import module1
module1.myfunc1()  

För att arbeta med funktionen myfunc3 måste du importera den enligt följande:

from package1.subpkg.module3  import  myfunc3
or
from package1.subpkg import module3
module3.myfunc3()  

För- och nackdelar med att använda absolut import

Här är fördelarna med att använda absolut import:

  • Det blir lätt att tracSätt tillbaka modulerna för kodkontroll.
  • Lätt att använda och väldigt okomplicerad.
  • Om projektet flyttas till en annan sökväg kommer importerna fortfarande att förbli desamma.

Nackdelar med att använda absolut import

Här är nackdelarna med att använda absoluta importer:

  • Importsökvägen kan bli mycket lång om modulerna är kapslade och modulnamnen är långa.

Använda relativ import

Med tanke på samma mappstruktur som nämnts ovan, kommer vi att se hur man importerar densamma med hjälp av relativ import.

I en relativ import är modulen som ska importeras relativ till den aktuella platsen, det vill säga den plats där import-satsen finns.

syntax

Vid relativ import måste du lägga till en punkt (.) före modulnamnet när du importerar med från.

Det kommer att stå två punkter (..) före modulnamnet om modulen är en nivå högre upp från den aktuella platsen.

Med hänvisning till mappstrukturfiguren som nämns ovan har vi följande moduler med deras funktioner, som vi behöver referera till.

  • I module1.py finns en funktion som heter myfunc1.
  • I module2.py finns en funktion som heter myfunc2.
  • I module3.py finns en funktion som heter myfunc3.
  • I module4.py finns en funktion som heter myfunc4.

För att arbeta med funktionen myfunc1 måste du importera den enligt följande:

from  .module1  import  myfunc1

För att arbeta med funktionen myfunc3 måste du importera den enligt följande:

from  .subpkg.module3  import  myfunc3

Fördelar med relativ import

  • Det är lätt att arbeta med relativ import.
  • Från den nuvarande platsen kan importen förkortas i jämförelse med absolut import.

Nackdelar med relativ import

  • Med relativ import är det svårt att tractillbaka där koden finns.

Vanliga frågor

Python Kan inte hitta modulen. Bekräfta att filen är korrekt stavad, finns på sys.path eller i den aktuella mappen, och att paketet är installerat i din aktiva virtuella miljö. Kör pip install följt av paketnamnet för tredjepartsmoduler.

Installera den först med pip, den Python pakethanteraren, till exempel pip install pandas. När den är installerad i din miljö, importera den normalt med import pandas. Inbyggda moduler som json behöver ingen installation.

En cirkulär import sker när två moduler importerar varandra, vilket innebär att en endast delvis laddas. Åtgärda detta genom att slå samman delad kod, importera inuti den funktion som behöver den, eller importera hela modulen istället för specifika namn.

Den vakt kör bara kod när filen körs direkt, inte när den importeras. Utan den skulle varje import köra modulens toppnivåsatser igen. Den håller återanvändbara funktioner separerade från testkod i skriptstil.

Nej. Python kör en modul en gång, cachar den sedan i sys.modules och återanvänder objektet för senare import. För att tvinga fram en omladdning under utveckling, anropa importlib.reload(module).

Använd importlib.import_module("namn") när modulnamnet bara är känt under körning, till exempel vid laddning av plugin-program. Den returnerar modulobjektet, så att du kan komma åt dess funktioner som vid en vanlig import.

Import av maskininlärningskod: NumPy, pandas, scikit-learn, TensorFlow och PyTorch som moduler. Team delar också upp sina egna pipelines i återanvändbara moduler och paket och importerar sedan delade förbehandlings- och träningsfunktioner över olika skript.

Ja. GitHub Copilot och agentassistenter föreslår importrader medan du skriver, lägger till saknade importer och hjälper till att lösa importfel. Bekräfta alltid att modulen är installerad och att namnet matchar din miljö innan du litar på ett förslag.

Sammanfatta detta inlägg med: