Adicionar permanentemente um caminho de arquivo para sys.path em Python

97

Eu tinha um arquivo chamado example_file.py, o que eu queria usar a partir de vários outros arquivos, assim que eu decidi adicionar example_file.pya sys.pathe importar este arquivo em outro arquivo para usar o arquivo. Para fazer isso, executei o seguinte no IPython.

import sys
sys.path
sys.path.append('/path/to/the/example_file.py')
print(sys.path)

Pude ver o caminho que acabei de adicionar e quando tentei importar este arquivo de outro caminho de diretório como este:

import example_file

funcionou bem, mas assim que saí do IPython, entrei novamente e verifiquei o sys.path, vi que o caminho que eu adicionei não estava presente, então como faço para adicionar um caminho para sys.path permanentemente no Python?

Shiva Krishna Bavandla
fonte
3
Faça do seu código um pacote adequado, torne-o easy_installable e seja feliz para o resto da sua vida (ao invés de mexer). Tirando isso: toda documentação informa CLARAMENTE que sys.path.append()aceita um diretório contendo um arquivo E NÃO UM CAMINHO ÚNICO PARA UM ARQUIVO.
Andreas Jung
possível duplicata de Adicionando pasta ao caminho do Python permanentemente
DhruvPathak
Não confunda o caminho do sistema com PYTHONPATH.
Burhan Khalid

Respostas:

95

Existem algumas maneiras. Um dos mais simples é criar um my-paths.ptharquivo (conforme descrito aqui ). Este é apenas um arquivo com a extensão .pthque você colocou no site-packagesdiretório do sistema . Em cada linha do arquivo, você coloca um nome de diretório, então você pode colocar uma linha lá com /path/to/the/e ele irá adicionar esse diretório ao caminho.

Você também pode usar a variável de ambiente PYTHONPATH, que é como a variável PATH do sistema, mas contém diretórios que serão adicionados sys.path. Veja a documentação .

Observe que não importa o que você faça, sys.pathcontém diretórios, não arquivos. Você não pode "adicionar um arquivo a sys.path". Você sempre adiciona seu diretório e então pode importar o arquivo.

BrenBarn
fonte
1
ok obrigado, tudo bem, eu adicionei meu diretório que consiste no arquivo e ele está funcionando quando importei o arquivo de outro local, mas o problema quando saí do ipython e voltei a verificar meu caminho, ele não aparece, Eu não quero fazer isso toda vez que insiro o código, quero adicionar o caminho do diretório para sys.path permanentemente, como fazer isso
Shiva Krishna Bavandla
@Kouripm: Seu comentário sugere que você não seguiu realmente minha sugestão, nem as sugestões do post duplicado com link acima.
BrenBarn
1
O sitepacote estava perfeito.
Zeinab Abbasimazar
8
consertou meu problema com sys.path.append('C:\\python34\\lib\\site-packages')obrigado!
tylerlindell
Para a posteridade: o .ptharquivo é o que a documentação do módulo do site chama de path configuration file. Digno de nota sobre o arquivo de configuração de caminho:no check is made that the item refers to a directory rather than a file. No item is added to sys.path more than once. Blank lines and lines beginning with # are skipped. Lines starting with import (followed by space or tab) are executed.
Minh Tran
1

Assim funcionou para mim:

adicionando o caminho que você gosta:

export PYTHONPATH=$PYTHONPATH:/path/you/want/to/add

verificação: você pode executar o cmd 'export' e verificar a saída ou pode verificar usando este cmd:

python -c "import sys; print(sys.path)"
Pandous
fonte