Переменные среды Windows меняются при открытии командной строки? - PullRequest
1 голос
/ 03 июня 2010

Иногда, когда я изменяю свои переменные среды в Windows, а затем использую программное обеспечение, эти переменные не обновляются должным образом.

Хороший пример - изменить переменную, затем открыть командную строку Windows, повторить переменную и увидеть, что она не была изменена, даже если вы правильно ее изменили в окне Переменные среды.

Другой пример, с которым я сейчас имею дело:

Некоторое время я использовал Python 2.4.x для проекта, который использует env var PYTHONPATH, значение которого было:

C:\Python24;C:\Python24\lib

Сегодня я установил Python 2.5.x для проекта. Я изменил свою PYTHONPATH, чтобы быть:

C:\Python25;C:\Python25\lib

Когда я использую Python 2.5, чтобы запустить скрипт и сделать это:

import sys
print sys.path

Он печатает:

'C:\\PYTHON24', 'C:\\PYTHON24\\lib' (and some other Python 2.5 related default installation paths)

Очевидно, что старые переменные окружения PYTHONPATH на самом деле не прилипают ...

Кто-нибудь знает, почему это происходит и как это исправить?

1 Ответ

2 голосов
/ 03 июня 2010

При изменении переменной среды на вкладке «Свойства системы» новое значение будет распространяться в проводнике Windows, а все приложения (например, cmd.exe) открываются из проводника Windows (или в окне «Выполнить», в меню «Пуск» и т. Д.). .) должен увидеть новое значение.

Однако, если вы работаете с такой программой, как редактор, python или какой-либо модуль запуска программ сторонних разработчиков, измените переменную среды и запустите cmd.exe из этой программы (вместо проводника Windows), скорее всего, вы чтобы увидеть старое значение переменной среды. Причина в том, что запущенная программа проигнорировала уведомление от Windows о том, что среда изменилась (что вовсе не необычно), и поскольку запущенный процесс наследует переменные среды, дочерний процесс не увидит изменения.

Обходной путь - убедиться, что вы запускаете приложение из проводника Windows или из окна «Выполнить». Перезагрузка вашей машины также будет работать (если перезагрузка не решает проблему, то происходит что-то еще).

...