Turiu tokią aplankų struktūrą.
application/app/folder/file.py
ir noriu importuoti kai kurias funkcijas iš file.py į kitą Python failą, esantį
application/app2/some_folder/some_file.py
Bandžiau
from application.app.folder.file import func_name
ir keletą kitų įvairių bandymų, bet kol kas man nepavyko tinkamai importuoti. Kaip man tai padaryti?
Pagal numatytuosius nustatymus negalite. Importuodamas failą "Python" ieško tik dabartiniame kataloge, kataloge, iš kurio paleistas įvesties taško scenarijus, ir sys.path
, kuris apima tokias vietas kaip paketo diegimo katalogas (iš tikrųjų viskas yra šiek tiek sudėtingiau, bet tai apima daugumą atvejų).
Tačiau "Python" kelią galite papildyti paleidimo metu:
# 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
Nieko blogo:
from application.app.folder.file import func_name
Tik įsitikinkite, kad aplanke
taip pat yra __init__.py``, kad jį būtų galima įtraukti kaip paketą. Nežinau, kodėl kituose atsakymuose kalbama apie
PYTHONPATH`.
Manau, kad ad hoc būdas būtų naudoti aplinkos kintamąjį PYTHONPATH
, kaip aprašyta dokumentuose: Python2, Python3
# Linux & OSX
export PYTHONPATH=$HOME/dirWithScripts/:$PYTHONPATH
# Windows
set PYTHONPATH=C:\path\to\dirWithScripts\;%PYTHONPATH%