Який правильний спосіб скасувати змінну середовища Linux у python?


85

З документації:

Якщо платформа підтримує unsetenv()функцію, ви можете видалити елементи у цьому відображенні, щоб скасувати змінні середовища. unsetenv()буде викликатися автоматично, коли елемент буде видалено з os.environ та коли буде викликаний один із методів pop()або clear().

Однак я хочу щось, що буде працювати незалежно від наявності unsetenv(). Як видалити елементи зі зіставлення, якщо воно недоступне? os.environ['MYVAR'] = None?


1
unsetenvпрацює над "більшістю ароматів Unix, Windows" згідно з документами.
Катріель

хммм, я не була впевнена. Я на платформі, де $ unset MYVARпрацюють команди
Фредлі

Відповіді:


139

Просто

del os.environ['MYVAR']

повинні працювати.


1
Питання полягало в тому, щоб, зрештою, вилучити елементи із зіставлення. Якщо unsetenv не підтримується, тоді ключ і значення видаляються із зіставлення, але залишаються встановленими в середовищі, ні?
Vinay Sajip

1
Якщо ключ не існує, я думаю, ви отримаєте KeyError.
rickfoosusa

5
для запису del os.environпрацював, коли os.unsetenvне на OSX.
jeremyjjbrown

1
Документи на del: docs.python.org/2/tutorial/…
Марті Чанг

До уваги це рішення не є ідемпотентним. тобто якщо MYVARу середовищі не існує, ви отримаєте виняток. Ви можете обернути це, try:але це прикро.
medley56

9

Ви все ще можете видалити елементи зі зіставлення , але це насправді не видалить змінну із середовища, якщо unsetenv()вона недоступна.

del os.environ['MYVAR']
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.