Cách chính xác để hủy đặt biến môi trường linux trong python là gì?


85

Từ tài liệu:

Nếu nền tảng hỗ trợ unsetenv()chức năng, bạn có thể xóa các mục trong ánh xạ này tới các biến môi trường chưa đặt. unsetenv()sẽ tự động được gọi khi một mục bị xóa khỏi os.environ và khi một trong các pop()hoặc clear()phương thức được gọi.

Tuy nhiên tôi muốn một cái gì đó sẽ hoạt động bất kể tính khả dụng của unsetenv(). Làm cách nào để xóa các mục khỏi ánh xạ nếu nó không có sẵn? os.environ['MYVAR'] = None?


1
unsetenvhoạt động trên "hầu hết các phiên bản Unix, Windows" theo tài liệu.
Katriel

hmmm, tôi không chắc. Tôi đang trên một nền tảng mà $ unset MYVARcác lệnh làm việc
fredley

Câu trả lời:


138

Chỉ

del os.environ['MYVAR']

nên làm việc.


1
Rốt cuộc, câu hỏi là về việc xóa các mục khỏi ánh xạ. Nếu unsetenv không được hỗ trợ, thì khóa và giá trị sẽ bị xóa khỏi ánh xạ nhưng vẫn được đặt trong môi trường, neh?
Vinay Sajip

1
Nếu khóa không tồn tại, tôi nghĩ bạn nhận được KeyError.
rickfoosusa

5
để ghi lại del os.environhoạt động khi os.unsetenvkhông có trên OSX.
jeremyjjbrown

1
Tài liệu trên del: docs.python.org/2/tutorial/…
Marty Chang

FYI giải pháp này không phải là giải pháp hữu ích. tức là nếu MYVARkhông tồn tại trong môi trường, bạn sẽ nhận được một ngoại lệ. Bạn có thể bọc nó trong một try:nhưng thật không may.
medley56

9

Bạn vẫn có thể xóa các mục khỏi ánh xạ , nhưng nó sẽ không thực sự xóa biến khỏi môi trường nếu unsetenv()không có sẵn.

del os.environ['MYVAR']
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.