Mám nasledujúcu štruktúru priečinkov.
application/app/folder/file.py
a chcem importovať niektoré funkcie zo súboru file.py do iného súboru Python, ktorý sa nachádza v
application/app2/some_folder/some_file.py
Skúsil som
from application.app.folder.file import func_name
a ďalšie rôzne pokusy, ale zatiaľ sa mi nepodarilo importovať správne. Ako to môžem urobiť?
V predvolenom nastavení to nie je možné. Pri importovaní súboru Python prehľadáva iba aktuálny adresár, adresár, z ktorého sa spúšťa vstupný skript, a sys.path
, ktorý zahŕňa miesta, ako je adresár inštalácie balíka (v skutočnosti je to trochu zložitejšie, ale pokrýva to väčšinu prípadov).
Cestu Pythonu však môžete pridať aj za behu:
# some_file.py
import sys
# insert at 1, 0 is the script path (or '' in REPL)
sys.path.insert(1, '/path/to/application/app/folder')
import file
Nie je na tom nič zlé:
from application.app.folder.file import func_name
Len sa uistite, že zložka
obsahuje aj __init__.py
, čo umožní jej zaradenie ako balíka. Nie som si istý, prečo ostatné odpovede hovoria o PYTHONPATH
.
Myslím, že ad-hoc spôsob by bol použiť premennú prostredia PYTHONPATH
, ako je popísané v dokumentácii: Python2, Python3
# Linux & OSX
export PYTHONPATH=$HOME/dirWithScripts/:$PYTHONPATH
# Windows
set PYTHONPATH=C:\path\to\dirWithScripts\;%PYTHONPATH%