Bu, sorunun ne olduğuna bağlıdır. Çevreyi klonlamak ve değiştirmek için bir çözüm olabilir:
subprocess.Popen(my_command, env=dict(os.environ, PATH="path"))
Ancak bu, değiştirilen değişkenlerin en sık oldukları geçerli python tanımlayıcılarına bağlı olmasına bağlıdır (ne sıklıkla alfasayısal + alt çizgi olmayan veya bir sayı ile başlayan değişkenler?
Aksi takdirde şöyle bir şey yazabilirsiniz:
subprocess.Popen(my_command, env=dict(os.environ,
**{"Not valid python name":"value"}))
Çok tuhaf durumda (ortam değişken isimlerinde kontrol kodlarını veya ascii olmayan karakterleri ne sıklıkta kullanıyorsunuz?) bytes
, Ortamın anahtarlarının (python3'te) bu yapıyı bile kullanamayacağınız.
Gördüğünüz gibi burada kullanılan teknikler (özellikle ilk olarak) ortamın anahtarları üzerindeki faydalar normalde geçerli python tanımlayıcılarıdır ve önceden (kodlama zamanında) da bilinir, ikinci yaklaşımın sorunları vardır. Durumun böyle olmadığı durumlarda, muhtemelen başka bir yaklaşım aramalısınız .
os.pathsep
, platformlarda çalışan yollar için ":" yerine kullanmayı tercih edin . Bkz. Stackoverflow.com/questions/1499019/…