Python – Import modulu z iného adresára

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




# 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




# 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