Почему мой Python 'sys.path' отличается для каждого инструмента, который я использую для запуска своего кода?
Я запутался в правилах, используемых для создания моего Pythonsys.path
, Я понимаю чтоПервая запись будет «каталог, содержащий скрипт, который использовался для вызова интерпретатора Python», или пустая строка, если Python был вызван в интерактивном режиме, и что последним вводом будут записи, основанные на установке Python. Но меня смущает то, что происходит между этими двумя наборами записей, в частности, как они связаны с моей PYTHONPATH.
Когда я (A) выполняю скрипт, который распечатывает записи моегоsys.path
с помощьюpython test.py
в командной строке системы в../scriptpath
каталог, я получаю:
/Users/Rax/Documents/Projects/scriptpath
... (my system PYTHONPATH, as configured in .bash_profile) #(i)
/Users/Rax/Documents/Projects/scriptpath
... (system entries)
что не то, что я получаю, когда (B) я бегуimport test
пока в../scriptpath
в оболочке 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
или (C) в оболочке Python
(empty string)
... (my system PYTHONPATH) #(i)
/Users/Rax/Documents/Projects/scriptpath
... (system entries)
в то время как, (D), когда я бегуtest.py
в моей IDE (PyCharm) я получаю либо
/Users/Rax/Documents/Projects/scriptpath
... (user-added entries in the PyCharm Interpreter Paths settings) #(i)
... (system entries)
или (E)
/Users/Rax/Documents/Projects/scriptpath
... (user-added entries in the PyCharm Interpreter Paths settings) #(i)
/Users/Rax/Documents/Projects/scriptpath
... (system entries)
в зависимости от того, есть ли у меня возможность включить «содержимое корня» или нет.
I думаю, я понимаю откуда (i) записи приходят в каждом случае: все используют мою системную PYTHONPATH, кроме PyCharm, которая использует пути «добавленные пользователем» в конце «путей» в «настройках интерпретатора»; но я не понимаю, откуда берутся другие объекты (или в этом отношении, как PyCharm может игнорировать мою системную PYTHONPATH).
Почему.. scriptpath
запись иногда повторяется до и после (я)? Какие правила используются для добавления других записей (например,/usr/local/bin
в (B)?