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)?