A következő mappaszerkezetem van.
application/app/app/folder/file.py
és szeretnék néhány függvényt importálni a file.py fájlból egy másik Python fájlba, amely a következő helyen található
application/app2/some_folder/some_file.py
.
Megpróbáltam
from application.app.app.folder.file import func_name
és néhány más különböző próbálkozást, de eddig nem sikerült megfelelően importálnom. Hogyan tudom ezt megtenni?
Alapértelmezés szerint nem lehet. Egy fájl importálásakor a Python csak az aktuális könyvtárat, azt a könyvtárat, amelyből a belépő szkript fut, és a sys.path
könyvtárat keresi, amely olyan helyeket tartalmaz, mint például a csomag telepítési könyvtára (valójában ennél egy kicsit összetettebb, de ez a legtöbb esetet lefedi).
A Python elérési útvonalát azonban futás közben is kiegészíthetjük:
# 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
Semmi baj:
from application.app.folder.file import func_name
Csak győződj meg róla, hogy a mappa
tartalmaz egy __init__.py
fájlt is, ez lehetővé teszi a csomagként való felvételét. Nem biztos, hogy a többi válasz miért beszél a PYTHONPATH
-ról.
Azt hiszem, egy ad-hoc módszer lenne a PYTHONPATH
környezeti változó használata a dokumentációban leírtak szerint: Python2, Python3
# Linux & OSX
export PYTHONPATH=$HOME/dirWithScripts/:$PYTHONPATH
# Windows
set PYTHONPATH=C:\path\to\dirWithScripts\;%PYTHONPATH%