Importer modul inn Python med eksempler

โšก Smart oppsummering

Importer inn Python lar รฉn fil gjenbruke variablene, funksjonene og klassene som er definert i en annen. En modul er ganske enkelt en .py-fil, mens en pakke grupperer relaterte moduler i en katalog merket med en __init__.py-fil.

  • ๐Ÿ”˜ Hva er en modul: En modul er en enkelt .py-fil som inneholder variabler, funksjoner eller klasser.
  • โ˜‘๏ธ importer nรธkkelord: import laster inn en hel modul; modulnavn.funksjonsnavn kaller medlemmene.
  • โœ… Selektiv import: `from module import name` henter bare inn funksjonene eller variablene du trenger.
  • ๐Ÿงช aliaser: importmodul som alias forkorter lange navn; fra modulen import * eksponerer alt.
  • ๐Ÿ› ๏ธ Pakker og stier: __init__.py gjรธr en mappe om til en pakke; sys.path viser sรธkestedene.
  • ๐Ÿค– AI-arbeidsflyter: Maskinlรฆringsprosjekter importerer NumPy, pandas og PyTorch som moduler.

Importer modul inn Python

Avsnittene nedenfor forklarer moduler, pakker, de ulike importstilene og hvordan absolutt og relativ import fungerer i Python.

Hva er modulene i Python?

En modul er en fil med Python kode. Koden kan vรฆre i form av variabler, funksjoner eller en definert klasse. Filnavnet blir modulnavnet.

For eksempel, hvis filnavnet ditt er guru99.py, vil modulnavnet vรฆre guru99. Med modulfunksjonalitet kan du bryte koden din i forskjellige filer i stedet for รฅ skrive alt i รฉn fil.

Hva er den Python importere modul?

En fil regnes som en modul i PythonFor รฅ bruke modulen mรฅ du importere den ved hjelp av importere nรธkkelord. Funksjonene eller variablene som finnes i filen kan brukes i en annen fil ved รฅ importere modulen. Denne funksjonaliteten er tilgjengelig pรฅ andre sprรฅk som TypeScript, JavaManus, Java, Ruby osv.

Hvordan opprette og importere en modul i Python?

Nรฅ skal vi opprette en modul og importere den til en annen fil.

Her er flyten for รฅ opprette og importere modulen som vist pรฅ skjermbildet:

Opprett og importer en modul i Python

Fรธlg trinnene som er gitt for รฅ opprette en modul i Python.

Mappestrukturen som brukes til รฅ teste koden er som fรธlger:

modtest/
	test.py
	display.py	

Trinn 1) Opprett en fil og gi den navnet test.py

Trinn 2) Lag en funksjon som heter display_message() inne i test.py

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

Trinn 3) Opprett nรฅ en annen fil display.py.

Trinn 4) Importer modulen test.py-filen i display.py, som vist nedenfor:

import test

Nรฅr du importerer, trenger du ikke รฅ nevne test.py, men bare navnet pรฅ filen.

Trinn 5) Deretter kan du kalle funksjonen display_message() fra test.py i display.py. Du mรฅ bruke module_name.function_name.

For eksempel test.display_message().

Import test
print(test.display_message())

Trinn 6) Nรฅr du kjรธrer display.py, fรฅr du fรธlgende Utgang:

Welcome to Guru99 Tutorials!

Importere en klasse i Python

Tidligere har vi sett en enkel modul med en funksjon. Her skal vi opprette en klasse og referere til klassen i en annen fil.

Mappstrukturen for รฅ teste koden er som fรธlger:

myproj/
	Car.py
	display.py

Lag en fil kalt Car.py med fรธlgende kode:

Filnavn: 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 finnes attributtene brand_name, model og manu_year. Funksjonene som er definert i klassen er car_details(), get_Car_brand(), get_Car_model().

La oss nรฅ bruke filen Car.py som en modul i en annen fil kalt display.py.

Filnavn: 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())

Utgang:

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 fรฅ tilgang til alle variablene og funksjonene fra Car.py ved hjelp av Car-modulen.

Bruker fra til importmodul

Du kan bare importere en liten del av modulen, dvs. bare de nรธdvendige funksjonene og variabelnavnene fra modulen, i stedet for รฅ importere hele koden.

Nรฅr du bare vil importere bestemte ting, kan du bruke nรธkkelordet ยซfraยป for รฅ importere det du รธnsker.

Sรฅ syntaksen er

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

Mappestrukturen som brukes til รฅ teste koden er som fรธlger:

modtest/
	test.py
	display.py	

I test.py er det to funksjoner som vist:

Filnavn: test.py

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

Nรฅ trenger du display_message()-funksjonen. Funksjonen eller variabelen du importerer kan nรฅs direkte som vist nedenfor:

Filnavn: display.py

from test import display_message
print(display_message())

Utgang:

Welcome to Guru99 Tutorials!

Hvis du nรฅ bruker funksjonen display_message1(), vil den gi en feilmelding om at funksjonen ikke er definert som vist nedenfor:

from test import display_message
print(display_message1())

Utgang:

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

Importerer alt fra modulen

Import lar deg importere hele modulen ved รฅ bruke import etterfulgt av modulnavnet, dvs. filnavnet eller biblioteket som skal brukes.

Syntaks:

Import module

Eller ved รฅ bruke

from module import *

Mappestrukturen som brukes til รฅ teste koden er som fรธlger:

modtest/
	test.py
	display.py	

Fรธlgende er kodedetaljene inne i test.py

my_name = "Guru99"
my_address = "Mumbai"

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

Bruke importmodulen

Ved รฅ bare bruke importmodulnavnet, for รฅ referere til variablene og funksjonene i modulen, mรฅ du sette modulnavnet foran dem.

Eksempel

Filnavn: display.py

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

Modulnavnet test brukes til รฅ referere til funksjonene og variablene i modultesten.

Utgang:

Welcome to Guru99 Tutorials!
All about Python!
Guru99
Mumbai

Bruker import *

La oss se et eksempel ved รฅ bruke import *. Ved hjelp av import *, er funksjonene og variablene direkte tilgjengelige, som vist i eksemplet nedenfor:

from test import *

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

Utgang:

Welcome to Guru99 Tutorials!
All about Python!
Guru99
Mumbai

funksjonen dir( ).

dir() er en innebygd funksjon i Pythondir() returnerer alle egenskapene og metodene, inkludert det gitte objektets innebygde egenskaper.

Sรฅ nรฅr dir() brukes pรฅ modulen, vil den gi deg variablene og funksjonene som finnes i modulen.

Her er et fungerende eksempel pรฅ dir() pรฅ en modul. Vi har en klasse som heter Car.py, la oss importere Car og tilordne den til dir() for รฅ se utdataene.

Mappestrukturen for รฅ teste koden vil vรฆre som fรธlger:

test prop/
	Car.py
	test.py	

Filnavn: 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) 

Filnavn: test.py

import Car

class_contents = dir(Car)
print(class_contents)

Utdataene gir oss navnet pรฅ klassen og alle funksjonene som er definert i Car.py.

Du kan ogsรฅ prรธve รฅ bruke dir() pรฅ en innebygd modul tilgjengelig i PythonLa oss prรธve det samme pรฅ JSON modulen som vist i eksemplet nedenfor. Den vil vise alle egenskapene og metodene som er tilgjengelige i JSON modul.

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

Utgang:

['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']

Nettsidepakker

En pakke er en katalog med alle moduler definert i den. ร… lage en Python Hvis tolken behandler det som en pakke, bรธr katalogen din inneholde filen __init__.py. __init__.py gjรธr katalogen til en pakke. Her er oppsettet til pakken vi skal jobbe med.

Pakker inn Python

Navnet pรฅ pakken er minpakkeFor รฅ begynne รฅ jobbe med pakken, opprett en katalog kalt mypackage/. Inne i katalogen opprett en tom fil kalt __init__.py. Opprett tre filer til: module1.py, module2.py og module3.py, og definer funksjonene som vist pรฅ skjermbildet. Her er detaljene for module1.py, module2.py og module3.py.

modul1.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")

modul2.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")

modul3.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 pakke er klar til bruk. Kall nรฅ pakken i hvilken som helst av filene dine som vist nedenfor i test.py:

Her blir mypackage.module1 importert og gitt et aliasnavn som modus1Pรฅ samme mรฅte kan du bruke de andre modulene module2.py og module3.py fra mypackage.

import mypackage.module1 as mod1

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

Utgang:

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

Vi har nettopp demonstrert pakken med en enkel modul med funksjoner inni. I henhold til prosjektet ditt kan du ogsรฅ opprette pakker som har underpakker, dvs. undermapper som har moduler med definerte klasser.

Python Modulsรธkesti

Under utfรธrelsen, nรฅr Python kommer over importer modulnavn, prรธver tolken รฅ finne modulen. Den sรธker etter modulen i den innebygde modullisten, og deretter i alle katalogene som er definert i sys.path.

For รฅ oppsummere, gjรธr tolken fรธlgende sรธk for รฅ finne modulen:

  1. I din nรฅvรฆrende katalog.
  2. I den innebygde modullisten.
  3. Inne i sys.path-katalogene.

Du kan fรฅ detaljene for sys.path ved รฅ importere sys-modulen og skrive ut sys.path. Det vil gi deg listen over kataloger som vist nedenfor:

importsys
print(sys.path)

Utgang:

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

Du kan ogsรฅ endre banen og beholde katalogene i henhold til dine krav.

Bruker modulalias i importen

Du kan ogsรฅ konvertere modulnavnet til en kortere form ved รฅ gi det et aliasnavn. Aliaset kan opprettes ved hjelp av as sรธkeord.

Syntaks:

import filename as alias name

Mappestrukturen for รฅ teste koden vil vรฆre som fรธlger:

Mod test/
	test.py
	display.py	

Fรธlgende er koden inne i test.py

my_name = "Guru99"
my_address = "Mumbai"

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

Nรฅ skal vi bruke et alias for 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 brukes for testmodulen er t. Sรฅ funksjonene og variablene fra test.py kan refereres til ved hjelp av aliaset t.

Utgang:

Welcome to Guru99 Tutorials!
All about Python!
Guru99
Mumbai

Absolutt og relativ import i Python

Du vet nรฅ hvordan du importerer en fil som en modul i en annen fil. La oss nรฅ se hvordan du administrerer filene som er tilgjengelige i mapper. Filene i mappene kan importeres enten ved รฅ bruke absolutt eller relativ import.

Tenk pรฅ at du har din prosjektmappestruktur, som vist nedenfor:

Absolutt og relativ import i Python

Rotmappen er mittprosjekt/. Den har to undermapper, pakke1 og pakke2.

Mappen pakke1 har to moduler, modul1.py og modul2.py.

Mappen pakke2 har รฉn klasse myclass.py, en underpakke subpkg med module3.py, og siste modul4.py.

  • I module1.py finnes det en funksjon som heter myfunc1.
  • I module2.py finnes det en funksjon som heter myfunc2.
  • I module3.py finnes det en funksjon som heter myfunc3.
  • I module4.py finnes det en funksjon som heter myfunc4.

Bruk av absolutt import

For absolutte importer mรฅ du legge til hele banen til modulen din direkte fra prosjektets rotmappe.

La oss nรฅ se hvordan vi kan bruke absolutte importer for รฅ referere til funksjonene som finnes i hver av modulene.

For รฅ jobbe med funksjonen myfunc1, mรฅ du importere den slik:

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

For รฅ jobbe med funksjonen myfunc3, mรฅ du importere den slik:

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

Fordeler og ulemper ved รฅ bruke absolutt import

Her er fordelene ved รฅ bruke absolutt import:

  • Det blir lett รฅ tracSett modulene tilbake for kodesjekk.
  • Enkel รฅ bruke og veldig grei.
  • Hvis prosjektet flyttes til en annen bane, vil importene fortsatt forbli de samme.

Ulemper ved รฅ bruke absolutt import

Her er ulempene med รฅ bruke absolutt import:

  • Importstien kan bli veldig lang hvis modulene er nestet og modulnavnene er lange.

Bruke relativ import

Med tanke pรฅ den samme mappestrukturen som nevnt ovenfor, skal vi se hvordan vi importerer den samme ved hjelp av relativ import.

I en relativ import er modulen som skal importeres relativ til gjeldende plassering, det vil si plasseringen der importsetningen finnes.

syntax

Ved relativ import mรฅ du legge til et punktum (.) fรธr modulnavnet nรฅr du importerer med fra.

Det vil vรฆre to punktum (..) foran modulnavnet hvis modulen er ett nivรฅ over gjeldende plassering.

Med henvisning til mappestrukturfiguren nevnt ovenfor, har vi fรธlgende moduler med deres funksjoner, som vi mรฅ referere til.

  • I module1.py finnes det en funksjon som heter myfunc1.
  • I module2.py finnes det en funksjon som heter myfunc2.
  • I module3.py finnes det en funksjon som heter myfunc3.
  • I module4.py finnes det en funksjon som heter myfunc4.

For รฅ jobbe med funksjonen myfunc1, mรฅ du importere den slik:

from  .module1  import  myfunc1

For รฅ jobbe med funksjonen myfunc3, mรฅ du importere den slik:

from  .subpkg.module3  import  myfunc3

Fordeler med relativ import

  • Det er enkelt รฅ jobbe med relativ import.
  • Fra nรฅvรฆrende sted kan importen forkortes i forhold til absolutt import.

Ulemper ved relativ import

  • Ved รฅ bruke relativ import er det vanskelig รฅ tractilbake der koden ligger.

Spรธrsmรฅl og svar

Python Finner ikke modulen. Bekreft at filen er stavet riktig, ligger pรฅ sys.path eller i gjeldende mappe, og at pakken er installert i det aktive virtuelle miljรธet. Kjรธr pip install etterfulgt av pakkenavnet for tredjepartsmoduler.

Installer den fรธrst med pipden Python pakkebehandler, for eksempel pip install pandas. Nรฅr den er installert i miljรธet ditt, importerer du den normalt med import pandas. Innebygde moduler som json trenger ingen installasjon.

En sirkulรฆr import skjer nรฅr to moduler importerer hverandre, slik at den ene bare er delvis lastet inn. Fiks dette ved รฅ slรฅ sammen delt kode, importere den inn i funksjonen som trenger den, eller importere hele modulen i stedet for spesifikke navn.

Den vaktkoden kjรธrer bare kode nรฅr filen kjรธres direkte, ikke nรฅr den importeres. Uten den ville hver import kjรธre modulens toppnivรฅsetninger pรฅ nytt. Den holder gjenbrukbare funksjoner atskilt fra testkode i skriptstil.

Nei. Python kjรธrer en modul รฉn gang, mellomlagrer den deretter i sys.modules og bruker objektet pรฅ nytt for senere import. For รฅ fremtvinge en ny innlasting under utvikling, kall importlib.reload(module).

Bruk importlib.import_module(โ€œnameโ€) nรฅr modulnavnet bare er kjent under kjรธring, for eksempel ved lasting av plugins. Den returnerer modulobjektet, slik at du kan fรฅ tilgang til funksjonene som en vanlig import.

Import av maskinlรฆringskode: NumPy, pandas, scikit-learn, TensorFlow og PyTorch som moduler. Team deler ogsรฅ sine egne pipelines inn i gjenbrukbare moduler og pakker, og importerer deretter delte forbehandlings- og treningsfunksjoner pรฅ tvers av skript.

Ja. GitHub Copilot og agentassistenter foreslรฅr importlinjer mens du skriver, legger til manglende importer og hjelper til med รฅ lรธse importfeil. Bekreft alltid at modulen er installert og at navnet samsvarer med miljรธet ditt fรธr du stoler pรฅ et forslag.

Oppsummer dette innlegget med: