PATH
Python 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.pathsep
ayrı 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.join
ayrı 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.environ
bunun 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.popen
veya gibi komutlar subprocess.Popen
daha sonra diğer işlemleri başlatmak için Python uygulamasından kullanılmalıdır. Aksi takdirde oldukça anlamsızdır.
export
bir değişkenin tüm alt süreçlerin ortamına kopyalanmasına neden olur , ancak üst süreç üzerinde hiçbir etkisi yoktur.