Как читать переменные окружения из определенного файла с Python 2.7 - PullRequest
0 голосов
/ 30 августа 2018

Чтобы объявить несколько переменных окружения, а затем вызвать некоторые скрипты Python, используя их, я создаю файл myfile.sh, который запускается bash myfile.sh. Однако у меня есть много сценариев, которые должны читать эти переменные окружения, но не могут создать myfile.sh для каждого из них!

Так что моя идея состоит в том, чтобы создать файл переменной среды и обращаться к нему через каждый из моих скриптов на python.

Итак, мой вопрос, как получить доступ к такому файлу с помощью Python 2.7?

Наиболее актуальный вопрос: Откуда os.environ читает переменные окружения?

Следует отметить, что я не могу установить дополнительные библиотеки, такие как dotenv. Поэтому решение, если возможно, должно основываться на стандартных библиотеках.

Любая помощь будет в основном оценена!

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Мне нужно создать новый файл переменных среды, к которому должен обращаться мой скрипт.

Это не так, как это работает. Вам нужно установить переменные окружения из файла ДО вызова вашего скрипта:

myenv.sh

export DB_USER="foo"
export DB_PWD="bar"
export DB_NAME="mydb"
# etc

myscript.py

import os

DB_USER = os.getenv("DB_USER")
DB_PWD = os.getenv("DB_PWD")
DB_NAME = os.getenv("DB_NAME")

# etc

Тогда

$ source /path/to/myenv.sh
$ python /path/to/myscript.py

Чаще всего вы захотите обернуть вышеупомянутые две строки в сценарий оболочки, чтобы облегчить жизнь вашему системному администратору.

РЕДАКТИРОВАТЬ: если вы хотите, чтобы эти env-переменные были установлены «автоматически», вы всегда можете получить их из .bashrc или другого подобного места - но тогда это вопрос системного администратора, а не вопрос программирования.

Теперь вопрос: вам действительно нужно , чтобы использовать здесь переменные окружения? Вы также можете использовать файл настроек Python - простой модуль Python, который просто определяет эти переменные, например:

mysettings.py

DB_USER = "foo"
DB_PWD = "bar"
# etc

и убедитесь, что путь к каталогу, содержащему этот скрипт, находится в вашей переменной $ PYTHONPATH. Тогда ваши сценарии должны только импортировать его (как они импортируют любой другой модуль), и все готово.

Обледенение: вы можете даже смешать оба решения, настроив модуль настроек на поиск переменных среды и предоставив значение по умолчанию, например:

mysettings.py

import os
DB_USER = os.getenv("DB_USER", "foo")
DB_PWD = os.getenv("DB_PWD", "bar")
# etc
0 голосов
/ 30 августа 2018

Показать среду из командной строки

  • Linux: export
  • Windows: set

Установка переменной среды

  • Linux: export foo=bar
  • Windows: set foo=bar

Печать env var:

  • Linux: echo $foo
  • Windows: echo %foo%
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...