TGViewer
Python Events Python Events @python_events · 126 subscribers
Post #194 51

Forwarded from Stanislav Bashkyrtsev

Проблема питона - не скорость.. Со скоростью в большинстве сервисов можно смириться. Проблема в том что все плохо продумано, коммьюнити очень слабое - все инструменты через одно место.

- Система загрузки модулей.. Не позволяет сказать "хочу этот модуль, а тот не хочу". Все что есть в репозитории модулей (site-packages) доступно, ну и соответственно нет возможности несколько версий одной библиотеки иметь (для разных приложений). За сим имеем кучу инструментов (pyenv, venv, virtualenv, etc) которые "решают" эту проблему страшными хаками типа "а давайте для этого проекта создадим его виртуальное окружение с его копией питона, файлами которые переопределяют стандартные питон модули, и так изолируем его зависимости"
- Инструменты сборки постоянно меняются, существует несколько инструментов по скачиванию зависимостей. И представляете - опубликованную версию зависимости можно удалить из центральной репы! У меня такое было лет 10 назад с mysql драйвером. Вот это я удивился..
- Нет ничего на подобие Spring IoC + Spring MVC. Т.е. нет возможности написать веб приложение с Dependency Injection'ом. Я счас просто свой IoC сделал в проекте. Что в целом не мешает, однако он же никак с MVC не интегрируются. Вроде как FastAPI обещал сделать Dependency Injection, а на самом деле сделал вообще не его. Но при этом сказал что это DI 😵 Т.е. вы не можете описать любые singleton бины и их заинжектить - он просто дергает метод, который каждый раз создает новые объекты (и вроде все равно не каждый объект можно так создать).
- Логирование.. казалось бы что может тут пойти не так. Но пришлось 2 дня разбираться как его настроить. 99% примеров в интернетах создают свою глобальную функцию по созданию логера, чтоб его централизованно так настраивать. Это вместо того чтоб использовать файл настроек.. Дикость. Ну и соответственно ни один фреймворк/библиотека ничего норм не логируют. А потому что не понимают как..
- Библиотеки и фреймворки все как один плохо спроектированы. Возьмем нормальные платформы типа Java - есть либа для JSON (де)сериализации (например, Jackson), есть библиотека для валидации входящих данных (Bean Validation), есть для считывания свойств (Spring IoC). А в питоне? Там есть популярный Pydantic, который реализует все три штуки вместе! Как можно было придумать запихнуть три несвязанные друг с другом responsibilities в одну либу - в голову не приходит.
И ладно бы одна такая либа, но нет же.. SQLalchemy - это JOOQ и ORM в одном теле. При этом есть либа для миграции БД - и она зависит от SQLalchemy! Тут душа требует много восклицательных знаков. Ну вы представляете если бы Flyway зависил от JOOQ или Hibernate? И реально нет в питоне нормального инструмента по миграциям (я не нашел во всяком случае) - только недоделанный yoyo
- Отсутствие интерфейсов
- Нет строгого JDBC - есть только DB-API который кой-как описан. Но если хотите - можете не следовать (и есть много драйверов которые этого не делают!). Ну и соответственно нет универсальных DB Pool типа c3p0. Представляете - у постргреса в самом драйвере написан свой DB Pool 😵

Ой, я могу продолжать конечно, но надо бы и поработать 🙂
More from @python_events
  1. Sep 15, 2026Post #380
  2. Jul 22, 2026Живой онлайн-воркшоп по AI-first разработке (Алексей Жиряков, Сбер). В эту субботу 25-го и…
  3. Jul 21, 2026Встречаемся на ВДНХ здесь, чтобы разобрать самый сок после PyCon Russia: свежие новости Py…
  4. Jun 9, 2026Завтра обсудим новости мира Python в прямом эфире Moscow Python🎙 Перенесли выпуск с пятни…
  5. May 7, 2026Историческое возвращение Moscow Python в Яндекс произойдёт 19-го мая. Мы встречаемся в офи…
  6. Jan 22, 2026https://t.me/devetups/664
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →