Tôi có một phần mềm phức tạp mà tôi không thể đăng, cũng như tôi không có ví dụ làm việc cụ thể. Tôi sẽ cố gắng giải thích vấn đề, có thể ai đó đã gặp phải vấn đề này trước đây.os.getenv trả về Không thay vì giá trị chính xác
Trên Linux Shell tôi đã xác định một biến môi trường:
> export MY_TEST_ENV=4711
> echo $MY_TEST_ENV
> 4711
Trong mã phức tạp Tôi muốn để có được biến này với
print os.getenv('MY_TEST_ENV')
mà luôn luôn trả về None
. Nếu tôi tạo một tập lệnh thử nghiệm để kiểm tra hành vi này, ngay cả với các lớp trong các tệp khác nhau, tôi luôn nhận được hành vi mong muốn (nghĩa là os.getenv('MY_TEST_ENV')
trả lại giá trị chính xác 4711
).
Mã được bắt đầu là 'sudo'.
Bất kỳ ý tưởng nào có thể là lý do?
Bạn đang chạy "mã phức" này như thế nào? – geoffspear
Phần còn lại của các biến môi trường vẫn còn đó? Quá trình python được khởi chạy như thế nào? Nếu bạn bắt đầu một quá trình với cuộc gọi hệ thống 'execve' và thực hiện _not_, hãy điền vào biến môi trường, môi trường của trẻ sẽ bị xóa. – alexis
Tôi biết giải pháp cho vấn đề của tôi là tầm thường - bởi vì tôi chạy quá trình python như sudo! Nhưng tôi đã không nhìn thấy giải pháp này cho đến khi tôi được hỏi o làm thế nào để chạy mã. Không có sudo, tôi thấy biến (nhưng phần còn lại của mã sẽ không hoạt động). – Alex