Ik heb de volgende mappenstructuur.
application/app/folder/file.py
en ik wil enkele functies importeren uit file.py in een ander Python bestand dat zich bevindt in
application/app2/some_folder/some_file.py
Ik heb geprobeerd
from application.app.folder.file import func_name
en enkele andere verschillende pogingen maar tot nu toe is het me niet gelukt om goed te importeren. Hoe kan ik dit doen?
Standaard kun je dat niet. Bij het importeren van een bestand doorzoekt Python alleen de huidige directory, de directory van waaruit het entry-point script wordt uitgevoerd, en sys.path
waarin locaties zoals de installatie directory van het pakket zijn opgenomen (het'is eigenlijk iets complexer dan dit, maar dit dekt de meeste gevallen).
U kunt echter toevoegen aan het Python-pad tijdens runtime:
# 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
Niets mis mee:
from application.app.folder.file import func_name
Zorg er alleen voor dat folder
ook een __init__.py
bevat, dit zorgt ervoor dat het als een pakket kan worden opgenomen. Ik weet niet zeker waarom de andere antwoorden het over PYTHONPATH
hebben.
Ik denk dat een ad-hoc manier zou zijn om de omgevingsvariabele PYTHONPATH
te gebruiken zoals beschreven in de documentatie: Python2, Python3
# Linux & OSX
export PYTHONPATH=$HOME/dirWithScripts/:$PYTHONPATH
# Windows
set PYTHONPATH=C:\path\to\dirWithScripts\;%PYTHONPATH%