Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Выпилить из курса python-dotenv #58

Open
pelid opened this issue Jul 9, 2020 · 1 comment
Open

Выпилить из курса python-dotenv #58

pelid opened this issue Jul 9, 2020 · 1 comment
Labels
need tutorial This issue need toturial to be solved

Comments

@pelid
Copy link
Member

pelid commented Jul 9, 2020

Библиотека python-dotenv предлагает простой способ считать переменные окружения из файла — просто вызвал функцию load_dotenv() и забыл о проблеме. Однако на практике за эту простоту приходится дорого платить.

Очень часто переменные окружения считывают и кладут в глобальные константы в шапке файла. Выглядит примерно так:

SECRET = os.getenv('SECRET')

Чтобы переменные окружения считались с учётом настроек внутри .env файла приходится помещать вызов load_dotenv() в шапку файла сразу под импортами. Это делает подключение скрипта небезопасным - он меняет настройки всей программы целиком прямо в момент импорта скрипта.

Считывать переменные окружения их файла - это удобная фича, но её не обязательно делать внутри Python скрипта. Есть много других инструментов. Docker, Systemd, и другие супервизоры предлагаеют встроенные механизмы. Также есть отдельные инструменты:

  • стандартная команда source для Mac и Linux
  • direnv для Mac и Linux (рекомендую)
  • call в Windows

Если переменные окружения необходимо не только загрузить из .env файла, но и преобразовать/провалидировать, то рекомендую использовать библиотеку environs.

PS. Библиотека environs тоже предлагает функцию для считывания переменных из файла read_env — её лучше избегать.


В этом тикете надо выпилить упоминание python-dotenv из шагов уроков, стандартных улучшений и из Энциклопедии Девмана. Вместо python-dotenv нужно предложить альтернативный способ решения проблемы. Скорее всего, понадобятся два новых туториала:

  • Как загрузить настройки из .env файла на Mac/Linux
  • Как загрузить настройки из .env файла на Windows

В обоих туториалах стоит упомянуть о существовании библиотек похожих на python-dotenv и предостеречь от их использования.

@pelid pelid added the need tutorial This issue need toturial to be solved label Jul 9, 2020
@pelid
Copy link
Member Author

pelid commented Jul 9, 2020

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
need tutorial This issue need toturial to be solved
Projects
None yet
Development

No branches or pull requests

1 participant