Назад | Перейти на главную страницу

Как передать переменные среды в сценарий WSGI с помощью uWSGI?

Я добавил следующую строку в /etc/environment:

FOO_DEPLOYMENT_ENV="vbox"

После входа в систему через SSH я могу echo $FOO_DEPLOYMENT_ENV и, конечно, посмотреть vbox вывод в оболочку. Если я открываю оболочку Python и запускаю os.getenv('FOO_DEPLOYMENT_ENV'), он вернется 'vbox', но тот же код в моем приложении Python при запуске uWSGI (как www-data user), он не видит переменную окружения.

Ясно, что это не проблема uWSGI, а скорее проблема с моим пониманием переменных среды или того, как они правильно установлены, и контекстов, в которых они могут быть получены. Что я делаю или понимаю неправильно?

Короче нельзя. Переменная среды может существовать в определенном экземпляре оболочки И может быть экспортирована во вспомогательные оболочки. Но ни в коем случае нельзя экспортировать переменные окружения в более родительскую оболочку и, конечно же, за пределы цепочки оболочек.

Однако вы можете хранить записи в файле, как вы предлагаете, а затем импортировать их вручную с помощью '.' в случае производных SH или source команда производными CSH.

Я лично использую tcsh для моей интерактивной оболочки. Если бы вы использовали это, вы могли бы указать псевдоним с именем cwdcmd который будет выполнять набор команд между каждой введенной командой. Я использую эту возможность, чтобы указать имя хоста, имя пользователя и текущий рабочий каталог в моих командных подсказках. Используя это средство, вы можете поставить include директива, которая будет регулировать вашу среду между каждой командной строкой.