Dlaczego mój Python „sys.path” różni się dla każdego narzędzia używanego do uruchamiania mojego kodu?

Jestem zdezorientowany co do zasad używanych do konstruowania mojego Pythonasys.path. Rozumiem, żewejdzie pięść „katalog zawierający skrypt, który został użyty do wywołania interpretera Pythona”, lub pusty ciąg znaków, jeśli Python został wywołany interaktywnie, a ostatnie wpisy będą wpisami opartymi na instalacji Pythona. Ale jestem zdezorientowany tym, co dzieje się pomiędzy tymi dwoma zestawami wpisów, w szczególności, w jaki sposób odnoszą się do mojego PYTHONPATH.

Kiedy (A) wykonuję skrypt, który wypisuje wpisy mojegosys.path za pomocąpython test.py w wierszu polecenia systemu w../scriptpath katalog, dostaję:

/Users/Rax/Documents/Projects/scriptpath
... (my system PYTHONPATH, as configured in .bash_profile)  #(i)
/Users/Rax/Documents/Projects/scriptpath
... (system entries)

co nie jest tym samym, co otrzymuję, gdy (B) biegnęimport test podczas gdy../scriptpath w powłoce 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

lub (C) w powłoce Pythona

(empty string)
... (my system PYTHONPATH)  #(i)
/Users/Rax/Documents/Projects/scriptpath
... (system entries)

while, (D) kiedy biegnętest.py w moim IDE (PyCharm) dostaję albo

/Users/Rax/Documents/Projects/scriptpath
... (user-added entries in the PyCharm Interpreter Paths settings)  #(i)
... (system entries)

Ruda)

/Users/Rax/Documents/Projects/scriptpath
... (user-added entries in the PyCharm Interpreter Paths settings)  #(i)
/Users/Rax/Documents/Projects/scriptpath
... (system entries)

w zależności od tego, czy mam opcję włączenia „roota treści”, czy nie.

I myślę, że rozumiem gdzie w każdym przypadku pochodzą (i) wpisy: wszystkie używają mojego systemu PYTHONPATH, z wyjątkiem PyCharm, który używa ścieżek „dodanych przez użytkownika” na końcu „Ścieżek” w „Ustawieniach tłumacza”; ale nie rozumiem, skąd pochodzą inne wejścia (lub w tym sensie, w jaki sposób PyCharm jest w stanie zignorować mój system PYTHONPATH).

Dlaczego jest.. scriptpath wpis czasami powtarzany przed i po (i)? Jakie reguły są używane do dodawania innych wpisów (takich jak/usr/local/bin w (B)?

questionAnswers(0)

yourAnswerToTheQuestion