În timp ce lucrăm la proiecte mari, ne putem confrunta cu o situație în care dorim să importăm a modul dintr-un alt director. Dar din anumite motive, modulul poate să nu fie importat corect. Acum nu vă faceți griji dacă modulul dvs. nu este importat corect. În acest articol, vom discuta modalități de a importa un modul dintr-un alt director.
Notă: Un modul este doar un program Python care se termină cu .py extensia și un folder care conține un modul devine un pachet.
Structura directorului:
- Folder_1 - main.py - Folder_2 - module1.py>
Să presupunem că, pentru a importa cum se importă fișierul în Python, avem două foldere diferite, unul conține main.py, care este fișierul nostru principal Python în care dorim să importăm module1 din Folder_2.
Modulul 1: conține două funcții numite add și odd_even. Funcția add va prelua două argumente și va returna adăugarea acestora. Funcția odd_even va lua doar unul argument și imprimați Chiar dacă numărul este par sau imprimați Impar dacă numărul este impar.
redenumiți un director linux
module1.py
Python3
# creating a simple add function> def> add(a, b):> >return> a>+>b> # creating a simple odd_even function> # to check if the number is odd or even> def> odd_even(n):> >if> n>%> 2> =>=> 0>:> >print>(>'Even'>)> >else>:> >print>(>'Odd'>)> |
>
>
Dacă pur și simplu încercăm să importăm modulul 1 din Folder_2, vom întâlni următoarea eroare.
principal.py
Python3
# importing module1 from another folder> import> Folder_2> # calling odd_even function> module1.odd_even(>5>)> |
>
>
Ieșire:

Eroare
ModuleNotFoundError , deoarece, implicit, interpretul Python va verifica fișierul doar în directorul curent și trebuie să setăm calea fișierului manual pentru a importa modulele dintr-un alt director. Putem face acest lucru folosind diferite moduri. Aceste moduri sunt discutate mai jos în detaliu.
Metoda 1: Importați modulul din diferite directoare folosind modulul sys
Putem folosi sys.path pentru a adăuga calea noului folder diferit (dosarul de unde dorim să importam modulele) la calea sistemului, astfel încât Python să poată căuta și modulul în acel director dacă nu găsește modulul în directorul său curent. La fel de sys.path cade sub clasa tip listă deci, putem folosi cu ușurință metoda de inserare pentru a adăuga calea folderului.
Python3
# importing sys> from> module1>import> odd_even, add> import> sys> # adding Folder_2 to the system path> sys.path.insert(>0>,>'/home/amninder/Desktop/Folder_2'>)> # importing the add and odd_even> # function> # calling odd_even function> odd_even(>5>)> # calling add function> print>(>'Addition of two number is :'>, add(>2>,>2>))> |
>
>
Ieșire :

Folosind sys
Metoda 2: Utilizarea PYTHONPATH variabilă de mediu
În mod similar, dacă nu doriți să utilizați sys modul pentru a seta calea noului director. Puteți să atribuiți o cale de director variabilei PYTHONPATH și să faceți programul să funcționeze.
În Linux , putem folosi următoarea comandă în terminal pentru a seta calea:
export PYTHONPATH=’cale/la/director’
În sistemul Windows:
SET PYTHONPATH=cale/la/director
Pentru a vedea dacă variabila PYTHONPATH deține calea noului folder, putem folosi următoarea comandă:
ecou $PYTHONPATH
Python3
# importing the add and odd_even function> from> module1>import> odd_even, add> # calling odd_even function> odd_even(>5>)> # calling add function> print>(>'Addition of two number is :'>, add(>2>,>2>))> |
>
>
Ieșire:

Folosind PYTHONPATH
Să presupunem că avem o structură de directoare ca aceasta:
java int la char
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py>
Acum, doriți să importați nou.py modul din Folder_2 în folderul_1 al proiectului nostru principal.py fişier.
Sintaxă:
din project.folder.subfolder.filename import function name
Python3
# importing sys> import> sys> # adding Folder_2/subfolder to the system path> sys.path.insert(>0>,>'/home/amninder/Desktop/project/Folder_2/subfolder'>)> # importing the hello> from> new>import> hello> # calling hello function> hello()> |
>
>
Ieșire:

Ieșire