Странность вызова скрипта 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.:)

Хотя вы открываете их в одном окне командной строки? Возможно, ваш путь действительно изменился?

Другие вопросы по тегам