Я пытаюсь прочитать в скрипте Python некоторые переменные, которые у меня есть в файле среды myfile.env
:
LOCALHOST='1'
Если в моем скрипте Python я просто запускаю:
import os
print(os.environ)
Он печатает:
environ({'PATH': '....', 'HOSTNAME': '...', 'PYCHARM_HOSTED': '1', 'PYTHONUNBUFFERED': '1'})
Но в этом массиве у меня нет переменной LOCALHOST
. Я обнаружил, что могу использовать python-dotenv
, и теперь я вижу это и работает, но я не понимаю, почему я должен его использовать, и невозможно загрузить их только с помощью модуля os
.
Потому что файл .env не является средой.
os.environ
получает данные из среды, которая, несколько упрощенно, представляет собой отображение строки в строку (имя в значение), поддерживаемое операционной системой для каждого процесса и наследуемое дочерними процессами. Вещи обычно помещаются туда с помощью операторов export
в оболочке — затем они будут унаследованы всеми процессами, запущенными из этой оболочки, — но есть и другие способы.
.env
файлы относятся к прикладному уровню; операционная система знает о них нет, и они нет автоматически загружаются в среду (и, следовательно, нет подхватываются os.environ
). Об этом позаботится python-dotenv.
Большое спасибо, а использование докера и установка параметра env_file не загружают этот файл в
os.environment
?