Ho la seguente struttura di cartelle.
application/app/folder/file.py
.
e voglio importare alcune funzioni da file.py in un altro file Python che risiede in
application/app2/some_folder/some_file.py
.
Ho provato
da application.app.folder.file import func_name
e altri vari tentativi, ma finora non sono riuscito a importare correttamente. Come posso fare?
Per default, non si può. Quando si importa un file, Python cerca solo la directory corrente, la directory da cui lo script entry-point è in esecuzione, e sys.path
che include posizioni come la directory di installazione del pacchetto (in realtà è un po' più complesso di così, ma questo copre la maggior parte dei casi).
Tuttavia, è possibile aggiungere al percorso di Python in fase di esecuzione:
# 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
Non c'è niente di male:
from application.app.folder.file import func_name
Assicurati solo che la cartella
contenga anche un __init__.py
, questo gli permette di essere incluso come pacchetto. Non sono sicuro del perché le altre risposte parlano di PYTHONPATH
.
Penso che un modo ad-hoc sarebbe quello di usare la variabile d'ambiente PYTHONPATH
come descritto nella documentazione: Python2, Python3
# Linux & OSX
export PYTHONPATH=$HOME/dirWithScripts/:$PYTHONPATH
# Windows
set PYTHONPATH=C:\path\to\dirWithScripts\;%PYTHONPATH%