2.5 KiB
2.5 KiB
Работа с переменными окружения в Python
Основные способы
1. Через os.environ (стандартная библиотека)
import os
# Чтение с безопасным значением по умолчанию
email = os.environ.get('EMAIL_ADDRESS', 'default@example.com')
# Чтение обязательной переменной
password = os.environ.get('EMAIL_PASSWORD')
if not password:
raise ValueError("EMAIL_PASSWORD not set")
# Прямой доступ (вызовет KeyError, если переменной нет)
email = os.environ['EMAIL_ADDRESS']
2. С использованием python-dotenv (рекомендуется для разработки)
import os
from dotenv import load_dotenv
# Загрузить переменные из .env файла
load_dotenv()
# Теперь работаем с переменными
email = os.environ.get('EMAIL_ADDRESS')
Установка python-dotenv
pip install python-dotenv
Или добавьте в зависимости проекта (уже добавлено в pyptoject.toml):
dependencies = [
"python-dotenv>=1.0.0"
]
Настройка .env файла
-
Скопируйте
example.envв.env:cp example.env .env -
Отредактируйте
.envи добавьте свои данные:EMAIL_ADDRESS=your_email@gmail.com EMAIL_PASSWORD=your_app_password IMAP_HOST=imap.gmail.com IMAP_PORT=993 SMTP_HOST=smtp.gmail.com SMTP_PORT=587 -
Убедитесь, что
.envдобавлен в.gitignore(уже добавлено)
Пример использования в MailOrderBot
import os
from dotenv import load_dotenv
from mail_order_bot.email_client import EmailClient
# Загрузить переменные из .env файла
load_dotenv()
# Чтение переменных
EMAIL = os.environ.get('EMAIL_ADDRESS')
PASSWORD = os.environ.get('EMAIL_PASSWORD')
# Создание клиента
client = EmailClient(
imap_host='imap.gmail.com',
smtp_host='smtp.gmail.com',
email=EMAIL,
password=PASSWORD
)
Безопасность
- НЕ коммитьте
.envфайл в git - Используйте
.env.exampleкак шаблон - Храните реальные пароли только в
.env(уже добавлено в.gitignore)