Я только что заметил странное поведение sys.path
и Windows CMD и хотел бы знать, что происходит и почему.
В следующих двух примерах я распечатываю sys.path
, меняю громкость на D:
, cd
в каталог, снова меняю громкость на C:
и, наконец, снова печатаю sys.path
.
Я делаю это с двумя очень похожими PYTHONPATH
с.
С PYTHONPATH=D:\
:
C:\Users\z003w3we>python -c "import sys; print(sys.path)"
['', 'D:\\', <others>]
C:\Users\z003w3we>D:
D:\>cd UserData
D:\UserData>C:
C:\Users\z003w3we>python -c "import sys; print(sys.path)"
['', 'D:\\', <others>]
Все как и ожидалось.
С PYTHONPATH=D:
(обратите внимание на отсутствующий трейлинг \
):
C:\Users\z003w3we>python -c "import sys; print(sys.path)"
['', 'D:\\', <others>]
C:\Users\z003w3we>D:
D:\>cd UserData
D:\UserData>C:
C:\Users\z003w3we>python -c "import sys; print(sys.path)"
['', 'D:\\UserData', <others>]
C:\Users\z003w3we>echo %PYTHONPATH%
D:
Теперь вместо D:
у нас неожиданно появляется D:\UserData
в sys.path
. Обратите внимание, что PYTHONPATH
без изменений.
Я не мог воспроизвести такое же поведение с PowerShell; оба PYTHONPATH
s показывают первое поведение.
Как я уже сказал, мне было бы очень интересно узнать, что здесь происходит.