Minulla on seuraava kansiorakenne.
application/sovellus/sovellus/kansio/tiedosto.py
.
ja haluan tuoda joitakin funktioita tiedostosta file.py toiseen Python-tiedostoon, joka sijaitsee osoitteessa
application/app2/some_folder/some_file.py
.
Olen kokeillut
from application.app.folder.file import func_name
ja joitakin muita erilaisia yrityksiä, mutta toistaiseksi en ole onnistunut tuomaan kunnolla. Miten voin tehdä tämän?
Oletusarvoisesti et voi. Tiedostoa tuodessaan Python etsii vain nykyisestä hakemistosta, hakemistosta, josta aloitusskripti suoritetaan, ja sys.path
, joka sisältää sijainnit, kuten paketin asennushakemiston (se on itse asiassa hieman monimutkaisempi kuin tämä, mutta tämä kattaa useimmat tapaukset).
Python-polkua voi kuitenkin lisätä ajon aikana:
# 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
Ei mitään vikaa:
from application.app.folder.file import func_name
Varmista vain, että kansio
sisältää myös __init__.py
, jolloin se voidaan sisällyttää pakettina. En ole varma, miksi muissa vastauksissa puhutaan PYTHONPATHista
.
Luulen, että ad-hoc tapa olisi käyttää ympäristömuuttujaa PYTHONPATH
, kuten dokumentaatiossa on kuvattu: Python2, Python3.
# Linux & OSX
export PYTHONPATH=$HOME/dirWithScripts/:$PYTHONPATH
# Windows
set PYTHONPATH=C:\path\to\dirWithScripts\;%PYTHONPATH%