Странность вызова скрипта Python в Windows (иначе, почему PATH не унаследован?)
Я столкнулся с поведением, которое я не ожидал при выполнении следующего скрипта 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.
1 ответ
Это странно. Я использую стандартный python 2.7 из python.org на Windows 7, и оба вызова выводят полный PATH, как и ожидалось.
Это может быть ошибка или "фича" в ActivePython.:)
Хотя вы открываете их в одном окне командной строки? Возможно, ваш путь действительно изменился?