Eu tenho a seguinte estrutura de pastas.
aplicação/app/folder/file.py
e eu quero importar algumas funções de *file.py** em outro arquivo Python que reside em
aplicação/app2/algum_pastas/algum_arquivo.py
I'já tentei
de application.app.folder.file import func_name
e algumas outras várias tentativas, mas até agora não consegui'não consegui importar correctamente. Como eu posso fazer isso?
Por defeito, não pode. Ao importar um arquivo, o Python procura apenas no diretório atual, no diretório de onde o script do ponto de entrada está rodando, e no sys.path
que inclui locais como o diretório de instalação do pacote (na verdade é um pouco mais complexo que isso, mas isso cobre a maioria dos casos).
No entanto, você pode adicionar ao caminho Python em tempo de execução:
# 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
Não tem nada de mal:
from application.app.folder.file import func_name
Apenas certifique-se de que o folder
também contenha um __init__.py
, isso permite que ele seja incluído como um pacote. Não tenho certeza porque as outras respostas falam sobre PYTHONPATH
.
Eu acho que uma forma ad-hoc seria utilizar a variável de ambiente PYTHONPATH
como descrito na documentação: Python2, Python3
# Linux & OSX
export PYTHONPATH=$HOME/dirWithScripts/:$PYTHONPATH
# Windows
set PYTHONPATH=C:\path\to\dirWithScripts\;%PYTHONPATH%