Я столкнулся с поведением, которого не ожидал при выполнении следующего скрипта Python (я назвал его repro.py):
import os
print os.environ['PATH'].replace(';', '\n')
Если вызвано python repro.py
, я получаю это:
C:\Python26\
C:\Python26\Scripts
C:\Windows\system32
C:\Windows
C:\Windows\System32\Wbem
C:\Program Files\MySQL\MySQL Server 5.1\bin
Когда я вызываю его, вводя repro.py
в командной строке, я получаю такой результат:
C:\Python26\
Очевидно, repro.py
наследует различные среды в зависимости от того, как он был запущен. Когда он запускается как первый интерпретатор arg to python, он ведет себя больше, чем я ожидал. С другой стороны, когда он запускается каким-либо процессом, который автоматически определяет, какую программу использовать при «открытии» файлов .py, он наследует действительно строгую среду. Он начинает пахнуть каким-то элементом безопасности.
Есть ли способ заставить оба способа вызова вести себя одинаково, предпочтительно эквивалентно python repro.py
?
Кто-нибудь знает, почему это происходит?
Информация о версии: ActivePython 2.6.5.12 (ActiveState Software Inc.)
в Windows7.