Это зависит от того, в чем проблема. Если это клонировать и модифицировать среду, одним из решений может быть:
subprocess.Popen(my_command, env=dict(os.environ, PATH="path"))
Но это в некоторой степени зависит от того, что замененные переменные являются действительными идентификаторами Python, которыми они чаще всего являются (как часто вы сталкиваетесь с именами переменных среды, которые не являются буквенно-цифровыми + подчеркивания или переменными, начинающимися с цифры?).
В противном случае вы могли бы написать что-то вроде:
subprocess.Popen(my_command, env=dict(os.environ,
**{"Not valid python name":"value"}))
В очень странном случае (как часто вы используете управляющие коды или не-ascii символы в именах переменных окружения?), Что ключи окружения bytes
, вы не можете (на python3) даже использовать эту конструкцию.
Как вы можете видеть, методы (особенно первые), используемые здесь, дают преимущества для ключей среды, как правило, являются действительными идентификаторами Python, и также известны заранее (во время кодирования), у второго подхода есть проблемы. В случаях, когда это не так, вы, вероятно, должны искать другой подход .