Apakah ada cara untuk memodifikasi file PATH
variabel lingkungan dengan cara platform independen menggunakan python?
Sesuatu yang mirip dengan os.path.join()
?
Jawaban:
Anda harus bisa memodifikasi os.environ
.
Karena os.pathsep
merupakan karakter untuk memisahkan jalur yang berbeda, Anda harus menggunakan ini untuk menambahkan setiap jalur baru:
os.environ["PATH"] += os.pathsep + path
atau, jika ada beberapa jalur untuk ditambahkan ke dalam daftar:
os.environ["PATH"] += os.pathsep + os.pathsep.join(pathlist)
Seperti yang Anda sebutkan, os.path.join
juga dapat digunakan untuk setiap jalur individu yang harus Anda tambahkan jika Anda harus membangunnya dari bagian yang terpisah.
os.pathsep
saya sebutkan (khusus untuk PATH)?
os.path.sep != os.pathsep
.
Harap dicatat bahwa os.environ
itu sebenarnya bukan kamus. Ini adalah objek seperti kamus khusus yang benar-benar menetapkan variabel lingkungan dalam proses saat ini menggunakan setenv .
>>> os.environ.__class__
<class os._Environ at 0x100472050>
>>> import os
>>> os.environ["HELLO"] = "WORLD"
>>> os.getenv("HELLO")
'WORLD'
Ini berarti bahwa PATH
(dan variabel lingkungan lainnya) akan terlihat oleh kode C yang dijalankan dalam proses yang sama.
(Karena komentar tidak dapat berisi pemformatan, saya harus meletakkan ini dalam sebuah jawaban, tetapi saya merasa ini adalah hal yang penting untuk dibuat. Ini sebenarnya adalah komentar pada komentar tentang tidak adanya padanan dengan 'ekspor' .)
Peringatan yang harus diperhatikan dengan memodifikasi variabel lingkungan dengan Python, adalah bahwa tidak ada yang setara dengan perintah shell "ekspor". Tidak ada cara untuk memasukkan perubahan ke dalam proses saat ini, hanya proses anak.
os.system
, os.popen
atau subprocess.Popen
kemudian harus digunakan dari aplikasi Python untuk meluncurkan proses lain. Kalau tidak, itu tidak ada gunanya.
export
menyebabkan variabel disalin ke lingkungan semua proses anak , tetapi tidak berpengaruh pada proses induk.