Files
mail_order_bot/docs/ENVIRONMENT_VARIABLES.md
2025-10-28 23:10:48 +03:00

96 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Работа с переменными окружения в Python
## Основные способы
### 1. Через `os.environ` (стандартная библиотека)
```python
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 (рекомендуется для разработки)
```python
import os
from dotenv import load_dotenv
# Загрузить переменные из .env файла
load_dotenv()
# Теперь работаем с переменными
email = os.environ.get('EMAIL_ADDRESS')
```
## Установка python-dotenv
```bash
pip install python-dotenv
```
Или добавьте в зависимости проекта (уже добавлено в `pyptoject.toml`):
```toml
dependencies = [
"python-dotenv>=1.0.0"
]
```
## Настройка .env файла
1. Скопируйте `example.env` в `.env`:
```bash
cp example.env .env
```
2. Отредактируйте `.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
```
3. Убедитесь, что `.env` добавлен в `.gitignore` (уже добавлено)
## Пример использования в MailOrderBot
```python
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`)