Por que meu 'sys.path' do Python é diferente para cada ferramenta que eu uso para executar meu código?
Estou confuso sobre as regras usadas para construir meu Pythonsys.path
. Eu entendo que oprimeira entrada será "o diretório que contém o script que foi usado para chamar o intérprete Python", ou uma string vazia se o Python foi chamado de maneira interativa, e que os últimos registros serão entradas baseadas na instalação do Python. Mas estou confuso sobre o que está acontecendo entre esses dois conjuntos de entradas, em particular, como elas se relacionam com o meu PITONONA.
Quando eu (A) executo um script que imprime as entradas do meusys.path
usandopython test.py
no prompt de comando do sistema no../scriptpath
diretório, eu recebo:
/Users/Rax/Documents/Projects/scriptpath
... (my system PYTHONPATH, as configured in .bash_profile) #(i)
/Users/Rax/Documents/Projects/scriptpath
... (system entries)
que não é igual ao que recebo quando (B) corroimport test
enquanto em../scriptpath
no shell IPython
(empty string)
/usr/local/bin
... (my system PYTHONPATH) #(i)
/Users/Rax/Documents/Projects/scriptpath
... (system entries)
/Library/Python/2.7/site-packages/IPython/extensions
ou (C) em um shell Python
(empty string)
... (my system PYTHONPATH) #(i)
/Users/Rax/Documents/Projects/scriptpath
... (system entries)
enquanto, (D) quando eu corrotest.py
no meu IDE (PyCharm) recebo
/Users/Rax/Documents/Projects/scriptpath
... (user-added entries in the PyCharm Interpreter Paths settings) #(i)
... (system entries)
ou (E)
/Users/Rax/Documents/Projects/scriptpath
... (user-added entries in the PyCharm Interpreter Paths settings) #(i)
/Users/Rax/Documents/Projects/scriptpath
... (system entries)
dependendo se eu tenho uma opção para incluir a "raiz de conteúdo" ativada ou não.
I acho que entendo de onde vêm as entradas (i) em cada caso: todos estão usando meu sistema PYTHONPATH, exceto PyCharm, que usa os caminhos "adicionados pelo usuário" no final de "Caminhos" em "Configurações do intérprete"; mas não entendo de onde vêm as outras entradas (ou, por falar nisso, como o PyCharm é capaz de ignorar meu sistema PYTHONPATH).
Porque é o.. scriptpath
entrada repetida algumas vezes antes e depois de (i)? Quais regras são usadas para adicionar as outras entradas (como/usr/local/bin
em B)?