3.3 KiB
3.3 KiB
Заметки об обновлении до Python 3.12
Обновлено 15 ноября 2025
Изменения зависимостей
Все зависимости обновлены для полной совместимости с Python 3.12:
- aiogram: 3.1.1 → 3.16.0
- aiohttp: 3.8.5 → 3.11.18 (обязательно для Python 3.12)
- sqlalchemy: 2.0.23 → 2.0.36
- alembic: 1.8.1 → 1.14.0
- python-dotenv: 1.0.0 → 1.0.1
- asyncpg: 0.28.0 → 0.30.0
- aiosqlite: 0.17.0 → 0.20.0
Изменения кода
1. database.py
- Обновлён импорт:
from sqlalchemy.ext.declarative import declarative_base→from sqlalchemy.orm import declarative_base
2. models.py
- Заменён устаревший
datetime.utcnowнаdatetime.now(timezone.utc) - Все поля
created_atтеперь используют timezone-aware datetime
3. Makefile
- Все команды теперь активируют виртуальное окружение через
. .venv/bin/activate - Это обеспечивает использование правильных версий Python-пакетов
Требования к системе
Для успешной установки требуются следующие системные пакеты:
sudo apt-get install -y build-essential python3-dev libpq-dev libssl-dev pkg-config
Установка
- Убедитесь, что используете Python 3.12:
python3 --version # Должно быть 3.12.x
- Пересоздайте виртуальное окружение:
rm -rf .venv
python3 -m venv .venv
. .venv/bin/activate
pip install --upgrade pip setuptools wheel
pip install -r requirements.txt
- Примените миграции (если требуется):
make migrate
Совместимость
- ✅ Полная совместимость с Python 3.12
- ✅ Все устаревшие API обновлены
- ✅ Проверено на Ubuntu 24.04 LTS
- ⚠️ Python 3.11 также поддерживается, но рекомендуется 3.12
Известные проблемы
-
aiohttp 3.8.x не компилируется на Python 3.12
- Решение: используйте aiohttp >= 3.11.0
-
datetime.utcnow deprecated
- Решение: использован
datetime.now(timezone.utc)
- Решение: использован
-
sqlalchemy.ext.declarative deprecated
- Решение: используйте
sqlalchemy.orm.declarative_base
- Решение: используйте
Откат к старой версии
Если нужно вернуться к Python 3.11:
# Установите Python 3.11
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python3.11 python3.11-venv python3.11-dev
# Пересоздайте окружение
rm -rf .venv
python3.11 -m venv .venv
. .venv/bin/activate
pip install -r requirements.txt
Тестирование
Проверка успешности обновления:
make run # Бот должен запуститься без ImportError
Если видите ошибку Unauthorized, это нормально — нужно настроить .env с вашим BOT_TOKEN.