Как сделать, чтобы переменные среды оставались в Python? - PullRequest
18 голосов
/ 28 января 2009

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

Причина, по которой мне нужно это сделать, заключается в том, что в студии, где я работаю, такие инструменты, как Maya, сильно зависят от переменных среды для настройки путей на нескольких платформах.

Мой тестовый код

import os
os.environ['FAKE'] = 'C:\\'

Открытие другого экземпляра Python и запрос os.environ['FAKE'] приводит к KeyError.

ПРИМЕЧАНИЕ: Проблемой будет переносимость, но небольшой API, который я пишу, сможет проверять версию ОС и запускать различные команды при необходимости.

Тем не менее, я пошел по пути использования техники реестра Windows и просто напишу альтернативные методы, которые будут вызывать сценарии оболочки на других платформах, когда они становятся требованиями.

Ответы [ 11 ]

0 голосов
/ 29 января 2009

Изнутри Python? Нет, это невозможно!

Если вы не связаны с Python, вам следует рассмотреть возможность использования сценариев оболочки (sh, bash и т. Д.). Команда «source» позволяет вам запустить скрипт, который изменяет среду и будет «прилипать» так, как вы хотите, к оболочке, в которой вы «поставили» скрипт. Здесь происходит то, что оболочка выполняет скрипт напрямую, а не создает подпрограмму -процесс выполнения скрипта.

Это будет довольно переносимо - для этого вы можете использовать Cygwin на Windows.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...