Při práci na velkých projektech se můžeme dostat do situace, kdy chceme importovat a modul z jiného adresáře. Z nějakého důvodu však modul nemusí být importován správně. Nyní si nedělejte starosti, pokud váš modul není správně importován. V tomto článku probereme způsoby, jak importovat modul z jiného adresáře.
Poznámka: Modul je pouze program v Pythonu, který končí .py rozšíření a složka obsahující modul se stane balíčkem.
Struktura adresáře:
- Folder_1 - main.py - Folder_2 - module1.py>
Předpokládejme, že pro import jak importovat soubor v Pythonu máme dvě různé složky, jedna obsahuje main.py, což je náš hlavní Python soubor, kam chceme importovat module1 ze složky Folder_2.
Modul 1: obsahuje dvě funkce nazvané add a odd_even. Funkce add vezme dva argumenty a vrátí jejich sčítání. Funkce odd_even zabere pouze jeden argument a tisknout Sudé, pokud je číslo sudé, nebo vytisknout liché, pokud je číslo liché.
module1.py
Python3
c program pro porovnání řetězců
# 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'>)> |
>
>
Pokud se pokusíme jednoduše importovat modul1 z Složka_2, narazíme na následující chybu.
main.py
Python3
# importing module1 from another folder> import> Folder_2> # calling odd_even function> module1.odd_even(>5>)> |
jak převést řetězec na char
>
>
Výstup:

Chyba
ModuleNotFoundError , protože ve výchozím nastavení Python interpret zkontroluje soubor pouze v aktuálním adresáři a pro import modulů z jiného adresáře musíme ručně nastavit cestu k souboru. Můžeme to udělat různými způsoby. Tyto způsoby jsou podrobně popsány níže.
Metoda 1: Import modulu z jiného adresáře pomocí modulu sys
Můžeme použít sys.path přidat cestu k nové jiné složce (složce, ze které chceme importovat moduly) do systémové cesty, aby Python mohl také hledat modul v tomto adresáři, pokud nenajde modul v jeho aktuálním adresáři. Tak jako sys.path spadá pod třída typu seznamu takže můžeme snadno použít metodu vložení k přidání cesty ke složce.
Python3
rozdíl mezi $ a $ $
# 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ýstup :

Pomocí sys
Metoda 2: Použití PYTHONPATH proměnná prostředí
Podobně, pokud nechcete používat sys modul pro nastavení cesty k novému adresáři. Proměnné PYTHONPATH můžete přiřadit cestu k adresáři a váš program bude stále fungovat.
v Linux , můžeme použít následující příkaz v terminálu k nastavení cesty:
exportovat PYTHONPATH='cesta/k/adresáři'
V systému Windows:
SET PYTHONPATH=cesta/k/adresáři
Chcete-li zjistit, zda proměnná PYTHONPATH obsahuje cestu k nové složce, můžeme použít následující příkaz:
echo $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>))> |
>
singleton designový vzor java
>
Výstup:

Pomocí PYTHONPATH
Předpokládejme, že máme strukturu adresářů, jako je tato:
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py>
Nyní chcete importovat new.py modul od Složka_2 do složky_1 našeho projektu main.py soubor.
Syntax:
from project.folder.subfolder.filename import functionname
Python3
formát řetězce java
# 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ýstup:

Výstup