#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. Проблема была не в среде, а в том, как я пытался импортировать зависимости, которые не работают таким образом. Большое вам спасибо за помощь