96 lines
2.5 KiB
Markdown
96 lines
2.5 KiB
Markdown
# Работа с переменными окружения в 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`)
|
||
|