Eso depende de cuál sea el problema. Si es para clonar y modificar el entorno, una solución podría ser:
subprocess.Popen(my_command, env=dict(os.environ, PATH="path"))
Pero eso depende en cierta medida de que las variables reemplazadas sean identificadores válidos de Python, que lo son con mayor frecuencia (¿con qué frecuencia se encuentra con nombres de variables de entorno que no son alfanuméricos + guiones bajos o variables que comienzan con un número?).
De lo contrario, podría escribir algo como:
subprocess.Popen(my_command, env=dict(os.environ,
**{"Not valid python name":"value"}))
En el caso muy extraño (¿con qué frecuencia usa códigos de control o caracteres no ascii en los nombres de las variables de entorno?) Que las claves del entorno son bytes
que no puede (en python3) incluso usar esa construcción.
Como puede ver, las técnicas (especialmente la primera) que se usan aquí, los beneficios en las claves del entorno normalmente son identificadores de Python válidos, y también conocidos de antemano (en el momento de la codificación), el segundo enfoque tiene problemas. En los casos en que ese no sea el caso, probablemente debería buscar otro enfoque .
os.pathsep
lugar de ":" para rutas que funcionan en plataformas. Ver stackoverflow.com/questions/1499019/…