Странность вызова скрипта Python в Windows (иначе, почему PATH не унаследован?) - PullRequest
0 голосов
/ 22 февраля 2011

Я столкнулся с поведением, которого не ожидал при выполнении следующего скрипта 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 Ответ

0 голосов
/ 25 февраля 2011

Это странно. Я использую стандартный python 2.7 из python.org на Windows 7, и оба вызова выводят полный PATH, как и ожидалось.

Это может быть ошибка или «фича» в ActivePython. :)

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

...