Python не устанавливает переменные среды

#python #environ

#python #environ

Вопрос:

Я написал приложение на python, которое можно настроить в режиме разработки или производства с помощью переменной среды. Эта переменная может быть передана в качестве аргумента CLI:

     if len(argv) >= 2:
        environ['DISCOVERY_ENV'] = argv[1]
    else:
        environ['DISCOVERY_ENV'] = 'development'
 

Проблема сейчас в том, что эта среда не устанавливается. Это означает, что если я использую следующий код, он не работает:

 if environ.get('DISCOVERY_ENV') == 'production':
    import adafruit_ads1x15.ads1015 as ADS
    from adafruit_ads1x15.analog_in import AnalogIn
    import busio
    import board
 

В этом примере библиотеки не будут импортироваться.

Редактировать:

Это работает в Windows, но не в Linux, в моем случае: Rasbian OS.

Кто-нибудь знает, почему это не работает?

Заранее спасибо!

Комментарии:

1. Что произойдет, если вы попытаетесь распечатать свой environ.get('DISCOVERY_ENV') ?

2. @BriseBalloches Возвращает None .

Ответ №1:

Глядя на ваш код, я думаю, что вы находитесь на micropython. Если это так, согласно документу, environ еще не реализован.

Цитируя документ, предложение выглядит следующим образом:

Обходной путь: используйте getenv, putenv и unsetenv

Комментарии:

1. Привет, я использую Python 3.6, который поставляется с raspberry. Я не думаю, что это MicroPython. Но в любом случае использование getenv и putenv не решило проблему.

2. О, извините, если это так, я проверю, не приходит ли мне в голову какая-либо другая идея. К сожалению, я не могу воспроизвести проблему. Может быть, приведенный здесь ответ может быть вам полезен?

3. Я добавил к вопросу тот факт, что проблема только в Linux. В Windows это работает идеально. Вот почему я в замешательстве. Но я пойду и проверю ссылку, которую вы мне дали.

4. Что произойдет, если вы используете environ['DISCOVERY_ENV'] = "test" print(environ.get('DISCOVERY_ENV')) ? Я имею в виду, в том же скрипте .py, просто чтобы проверить, есть ли проблема, которая не на стороне python. Например, может случиться так, что первая часть вашего кода и вторая принадлежат 2 разным файлам python, и они выполняются в другом контексте.

5. Проблема была не в среде, а в том, как я пытался импортировать зависимости, которые не работают таким образом. Большое вам спасибо за помощь