logo

Python – Import modulu z iného adresára

Pri práci na veľkých projektoch sa môžeme dostať do situácie, kedy chceme importovať a modul z iného adresára. Z nejakého dôvodu sa však modul nemusí importovať správne. Teraz sa nemusíte obávať, ak váš modul nie je správne importovaný. V tomto článku sa budeme zaoberať spôsobmi importovania modulu z iného adresára.

Poznámka: Modul je len program Python, ktorý končí s .py rozšírenie a priečinok, ktorý obsahuje modul, sa stane balíkom.



Adresárová štruktúra:

 - Folder_1 - main.py - Folder_2 - module1.py>

Predpokladajme, že na import ako importovať súbor v Pythone máme dva rôzne priečinky, jeden obsahuje main.py, čo je náš hlavný Python súbor, do ktorého chceme importovať modul1 z Folder_2.

Modul 1: obsahuje dve funkcie s názvom add a nepárne_párne. Funkcia add vezme dva argumenty a vráti ich sčítanie. Funkcia nepárne_párne zaberie iba jeden argument a vytlačte aj keď je číslo párne alebo vytlačte nepárne, ak je číslo nepárne.



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'>)>

>

>

Ak sa jednoducho pokúsime importovať modul1 od Priečinok_2, narazíme na nasledujúcu chybu.

main.py

Python3

konverzia dátumu na reťazec




# importing module1 from another folder> import> Folder_2> # calling odd_even function> module1.odd_even(>5>)>

>

>

Výkon:

Chyba

ModuleNotFoundError , pretože v predvolenom nastavení interpret Python skontroluje súbor iba v aktuálnom adresári a na importovanie modulov z iného adresára musíme manuálne nastaviť cestu k súboru. Môžeme to urobiť rôznymi spôsobmi. Tieto spôsoby sú podrobne diskutované nižšie.

Metóda 1: Importujte modul z iného adresára pomocou modulu sys

Môžeme použiť sys.path pridať cestu k novému odlišnému priečinku (priečinok, z ktorého chceme importovať moduly) do systémovej cesty, aby Python mohol vyhľadať modul aj v tomto adresári, ak nenájde modul v jeho aktuálnom adresári. Ako sys.path spadá pod trieda typu zoznamu takže môžeme ľahko použiť metódu vloženia na pridanie cesty k priečinku.

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

>

>

Výkon :

Pomocou sys

Metóda 2: Použitie PYTHONPATH premenná prostredia

Podobne, ak nechcete použiť sys modul na nastavenie cesty k novému adresáru. Premennej PYTHONPATH môžete priradiť cestu k adresáru a váš program bude stále fungovať.

In Linux , môžeme použiť nasledujúci príkaz v termináli na nastavenie cesty:

exportovať PYTHONPATH='cesta/do/adresára'

V systéme Windows:

SET PYTHONPATH=cesta/do/adresára

Ak chcete zistiť, či premenná PYTHONPATH obsahuje cestu k novému priečinku, môžeme použiť nasledujúci príkaz:

ozvena $PYTHONPATH

Python3

tučným písmom v css




# 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>))>

>

>

Výkon:

Pomocou PYTHONPATH

Predpokladajme, že máme takúto adresárovú štruktúru:

- project - Folder_1 - main.py - Folder_2 - subfolder - new.py>

Teraz chcete importovať new.py modul od Priečinok_2 do priečinka 1 nášho projektu main.py súbor.

Syntax:

from project.folder.subfolder.filename import functionname

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

>

>

Výkon:

Výkon