Có cách nào để sửa đổi PATH
biến môi trường theo cách độc lập với nền tảng bằng python không?
Một cái gì đó tương tự như os.path.join()
?
Câu trả lời:
Bạn sẽ có thể sửa đổi os.environ
.
Vì os.pathsep
là ký tự để phân tách các đường dẫn khác nhau, bạn nên sử dụng ký tự này để nối mỗi đường dẫn mới:
os.environ["PATH"] += os.pathsep + path
hoặc nếu có một số đường dẫn để thêm vào danh sách:
os.environ["PATH"] += os.pathsep + os.pathsep.join(pathlist)
Như bạn đã đề cập, os.path.join
cũng có thể được sử dụng cho từng đường dẫn riêng lẻ mà bạn phải nối thêm trong trường hợp bạn phải xây dựng chúng từ các phần riêng biệt.
os.pathsep
tôi đã đề cập (cụ thể cho PATH)?
os.path.sep != os.pathsep
.
Xin lưu ý rằng đó os.environ
không thực sự là một từ điển. Đó là một đối tượng giống như từ điển đặc biệt thực sự đặt các biến môi trường trong quy trình hiện tại bằng cách sử dụng setenv .
>>> os.environ.__class__
<class os._Environ at 0x100472050>
>>> import os
>>> os.environ["HELLO"] = "WORLD"
>>> os.getenv("HELLO")
'WORLD'
Điều này có nghĩa là PATH
(và các biến môi trường khác) sẽ hiển thị với mã C chạy trong cùng một quá trình.
(Vì nhận xét không thể chứa định dạng, tôi phải đặt câu này trong câu trả lời, nhưng tôi cảm thấy đó là một điểm quan trọng cần thực hiện. Đây thực sự là một nhận xét về nhận xét không có tương đương với 'xuất' .)
Lưu ý khi sửa đổi các biến môi trường trong Python là không có lệnh shell "export" tương đương. Không có cách nào đưa các thay đổi vào quy trình hiện tại, chỉ có quy trình con.
os.system
, os.popen
hoặc subprocess.Popen
sau đó nên được sử dụng từ các ứng dụng Python để khởi động quá trình khác. Nếu không thì nó khá vô nghĩa.
export
khiến một biến được sao chép vào môi trường của tất cả các tiến trình con , nhưng không ảnh hưởng đến tiến trình mẹ.