Itu tergantung pada apa masalahnya. Jika ingin mengkloning dan memodifikasi lingkungan, salah satu solusinya adalah:
subprocess.Popen(my_command, env=dict(os.environ, PATH="path"))
Tapi itu agak tergantung pada variabel yang diganti adalah pengidentifikasi python yang valid, yang paling sering adalah (seberapa sering Anda mengalami nama variabel lingkungan yang bukan garis bawah + alfanumerik atau variabel yang dimulai dengan angka?).
Kalau tidak, Anda bisa menulis sesuatu seperti:
subprocess.Popen(my_command, env=dict(os.environ,
**{"Not valid python name":"value"}))
Dalam kasus yang sangat aneh (seberapa sering Anda menggunakan kode kontrol atau karakter non-ascii dalam nama variabel lingkungan?) Bahwa kunci-kunci lingkungan bytes
Anda tidak dapat (pada python3) bahkan menggunakan konstruksi itu.
Seperti yang Anda lihat teknik (terutama yang pertama) yang digunakan di sini manfaat pada kunci lingkungan biasanya adalah pengidentifikasi python yang valid, dan juga dikenal sebelumnya (pada waktu pengkodean), pendekatan kedua memiliki masalah. Dalam kasus di mana bukan itu masalahnya Anda mungkin harus mencari pendekatan lain .
os.pathsep
daripada ":" untuk jalur yang berfungsi lintas platform. Lihat stackoverflow.com/questions/1499019/…