You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Библиотека python-dotenv предлагает простой способ считать переменные окружения из файла — просто вызвал функцию load_dotenv() и забыл о проблеме. Однако на практике за эту простоту приходится дорого платить.
Очень часто переменные окружения считывают и кладут в глобальные константы в шапке файла. Выглядит примерно так:
SECRET=os.getenv('SECRET')
Чтобы переменные окружения считались с учётом настроек внутри .env файла приходится помещать вызов load_dotenv() в шапку файла сразу под импортами. Это делает подключение скрипта небезопасным - он меняет настройки всей программы целиком прямо в момент импорта скрипта.
Считывать переменные окружения их файла - это удобная фича, но её не обязательно делать внутри Python скрипта. Есть много других инструментов. Docker, Systemd, и другие супервизоры предлагаеют встроенные механизмы. Также есть отдельные инструменты:
Если переменные окружения необходимо не только загрузить из .env файла, но и преобразовать/провалидировать, то рекомендую использовать библиотеку environs.
PS. Библиотека environs тоже предлагает функцию для считывания переменных из файла read_env — её лучше избегать.
В этом тикете надо выпилить упоминание python-dotenv из шагов уроков, стандартных улучшений и из Энциклопедии Девмана. Вместо python-dotenv нужно предложить альтернативный способ решения проблемы. Скорее всего, понадобятся два новых туториала:
Как загрузить настройки из .env файла на Mac/Linux
Как загрузить настройки из .env файла на Windows
В обоих туториалах стоит упомянуть о существовании библиотек похожих на python-dotenv и предостеречь от их использования.
The text was updated successfully, but these errors were encountered:
Библиотека
python-dotenv
предлагает простой способ считать переменные окружения из файла — просто вызвал функциюload_dotenv()
и забыл о проблеме. Однако на практике за эту простоту приходится дорого платить.Очень часто переменные окружения считывают и кладут в глобальные константы в шапке файла. Выглядит примерно так:
Чтобы переменные окружения считались с учётом настроек внутри
.env
файла приходится помещать вызовload_dotenv()
в шапку файла сразу под импортами. Это делает подключение скрипта небезопасным - он меняет настройки всей программы целиком прямо в момент импорта скрипта.Считывать переменные окружения их файла - это удобная фича, но её не обязательно делать внутри Python скрипта. Есть много других инструментов. Docker, Systemd, и другие супервизоры предлагаеют встроенные механизмы. Также есть отдельные инструменты:
source
для Mac и Linuxcall
в WindowsЕсли переменные окружения необходимо не только загрузить из
.env
файла, но и преобразовать/провалидировать, то рекомендую использовать библиотеку environs.PS. Библиотека
environs
тоже предлагает функцию для считывания переменных из файлаread_env
— её лучше избегать.В этом тикете надо выпилить упоминание
python-dotenv
из шагов уроков, стандартных улучшений и из Энциклопедии Девмана. Вместоpython-dotenv
нужно предложить альтернативный способ решения проблемы. Скорее всего, понадобятся два новых туториала:.env
файла на Mac/Linux.env
файла на WindowsВ обоих туториалах стоит упомянуть о существовании библиотек похожих на python-dotenv и предостеречь от их использования.
The text was updated successfully, but these errors were encountered: