Como faço para descobrir o meu caminho python usando python?
-
18-09-2019 - |
Pergunta
Como faço para descobrir quais diretórios estão listados na variável PYTHONPATH
do meu sistema, a partir de um script Python (ou o shell interativo)?
Solução
sys.path
podem incluir itens que não são especificamente na variável de ambiente PYTHONPATH
. Para consultar a variável diretamente, use:
import os
try:
user_paths = os.environ['PYTHONPATH'].split(os.pathsep)
except KeyError:
user_paths = []
Outras dicas
Você provavelmente também querem isso:
import sys
print(sys.path)
Ou como um forro do terminal:
python -c "import sys; print('\n'.join(sys.path))"
Parece que não consegue editar a outra resposta. Tem um pequeno erro na medida em que é somente para Windows. A solução mais genérica é usar os.sep como abaixo:
sys.path podem incluir itens que não são especificamente na variável de ambiente PYTHONPATH. Para consultar a variável diretamente, use:
import os
os.environ['PYTHONPATH'].split(os.pathsep)
PYTHONPATH é uma variável de ambiente cujo valor é uma lista de diretórios. Uma vez definido, ele é usado pelo Python para procurar módulos importados, juntamente com outras DST. e diretórios de bibliotecas 3rd-party listados em "sys.path" do Python.
Como quaisquer outras variáveis ??de ambiente, você pode exportá-lo com casca ou em ~ / .bashrc, consulte aqui . Você pode consultar os.environ [ 'PYTHONPATH'] para o seu valor em Python como mostrado abaixo:
$ python3 -c "import os, sys; print(os.environ['PYTHONPATH']); print(sys.path) if 'PYTHONPATH' in sorted(os.environ) else print('PYTHONPATH is not defined')"
Se definido no shell como
$ export PYTHONPATH=$HOME/Documents/DjangoTutorial/mysite
THEN resultar =>
/home/Documents/DjangoTutorial/mysite
['', '/home/Documents/DjangoTutorial/mysite', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages']
ELSE resultado =>
PYTHONPATH is not defined
Para definir PYTHONPATH para vários caminhos, consulte aqui .
Note que se pode adicionar ou excluir um caminho de pesquisa via sys.path.insert (), del ou remove () em tempo de execução, mas não através os.environ []. Exemplo:
>>> os.environ['PYTHONPATH']="$HOME/Documents/DjangoTutorial/mysite"
>>> 'PYTHONPATH' in sorted(os.environ)
True
>>> sys.path // but Not there
['', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages']
>>> sys.path.insert(0,os.environ['PYTHONPATH'])
>>> sys.path // It's there
['$HOME/Documents/DjangoTutorial/mysite', '', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages']
>>>
Em resumo, PYTHONPATH é uma maneira de especificar o caminho de pesquisa Python (s) para os módulos importados em sys.path. Você também pode aplicar operações de lista diretamente para sys.path sem o auxílio de PYTHONPATH.