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