logo

Python – Import modulu z jiného adresáře

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