Điều đó phụ thuộc vào vấn đề là gì. Nếu nó nhân bản và sửa đổi môi trường, một giải pháp có thể là:
subprocess.Popen(my_command, env=dict(os.environ, PATH="path"))
Nhưng điều đó phần nào phụ thuộc vào việc các biến được thay thế là các định danh python hợp lệ, mà chúng thường là nhất (bạn có thường chạy vào các tên biến môi trường không phải là chữ và số + gạch dưới hoặc các biến bắt đầu bằng một số không?).
Nếu không, bạn sẽ có thể viết một cái gì đó như:
subprocess.Popen(my_command, env=dict(os.environ,
**{"Not valid python name":"value"}))
Trong trường hợp rất kỳ lạ (bạn có thường xuyên sử dụng mã điều khiển hoặc ký tự không phải mã ascii trong tên biến môi trường không?) Rằng các khóa của môi trường là bytes
bạn không thể (trên python3) thậm chí sử dụng cấu trúc đó.
Như bạn có thể thấy các kỹ thuật (đặc biệt là kỹ thuật đầu tiên) được sử dụng ở đây mang lại lợi ích cho các khóa của môi trường thông thường là các định danh python hợp lệ và cũng được biết trước (tại thời điểm mã hóa), cách tiếp cận thứ hai có vấn đề. Trong trường hợp đó không phải là trường hợp bạn có thể nên tìm cách tiếp cận khác .
os.pathsep
thay vì ":" cho các đường dẫn hoạt động trên các nền tảng. Xem stackoverflow.com/questions/1499019/ khăn