PATHPython kullanarak ortam değişkenini platformdan bağımsız bir şekilde değiştirmenin bir yolu var mı ?
Benzer bir şey os.path.join()mi?
Yanıtlar:
Değiştirebilmelisiniz os.environ.
Yana os.pathsepayrı farklı yollara karakteridir, her yeni bir yol eklemek için bu kullanmalısınız:
os.environ["PATH"] += os.pathsep + path
veya bir listeye eklenecek birkaç yol varsa:
os.environ["PATH"] += os.pathsep + os.pathsep.join(pathlist)
Bahsettiğiniz gibi, os.path.joinayrı parçalardan inşa etmeniz gerektiğinde eklemeniz gereken her bir yol için de kullanılabilir.
os.pathsep( PATH'a özgü)?
os.path.sep != os.pathsep.
Lütfen os.environbunun aslında bir sözlük olmadığını unutmayın . Setenv kullanarak mevcut süreçte ortam değişkenlerini gerçekten ayarlayan özel bir sözlük benzeri nesnedir .
>>> os.environ.__class__
<class os._Environ at 0x100472050>
>>> import os
>>> os.environ["HELLO"] = "WORLD"
>>> os.getenv("HELLO")
'WORLD'
Bu, PATH(ve diğer ortam değişkenlerinin) aynı işlemde çalıştırılan C koduna görünür olacağı anlamına gelir .
(Yorumlar biçimlendirme içeremeyeceğinden, bunu bir cevaba koymam gerekiyor, ancak bunun önemli bir nokta olduğunu düşünüyorum. Bu gerçekten de 'dışa aktar' ile eşdeğer olmadığına dair yorum hakkında bir yorum .)
Python'da ortam değişkenlerini değiştirirken dikkat edilmesi gereken uyarı, kabuk "dışa aktar" komutunun bir eşdeğeri olmamasıdır. Mevcut sürece değişiklik enjekte etmenin bir yolu yoktur, sadece alt süreçler.
os.system, os.popenveya gibi komutlar subprocess.Popendaha sonra diğer işlemleri başlatmak için Python uygulamasından kullanılmalıdır. Aksi takdirde oldukça anlamsızdır.
exportbir değişkenin tüm alt süreçlerin ortamına kopyalanmasına neden olur , ancak üst süreç üzerinde hiçbir etkisi yoktur.