TGViewer
Digitable: Channel Digitable: Channel @digitable_blog · 214 subscribers
Post #25 153
#all #development #python #packages #environment #dependencies #pip #pipx #conda #poetry #pyflow #pdm #venv

Какие способы работы с пакетами в Python вы знаете?

Да и вообще зачем всё это надо?

Смысл в том, что проекты редко делаются без стороннего набора библиотек, особенно, когда строите что-то поверх фреймворков. Так и выходит, что каким-то образом надо следить чтобы зависимости находились в одном месте и их можно было подтягивать вне зависимости от разработчика и среды окружения. Будь это другой разработчик на другой ОС или же CI/CD-агенты.

Если не использовать менеджеры пакетов/зависимостей, тогда всё будет храниться в вашем общем кеше, да и другое окружение/разработчик просто-напросто не будет знать какие версии и каких пакетов ставить.


Что есть в Питоне?

Во-первых, pip, который можно использовать в следующем виде:

collapsed:: true
установка - pip install torch
установка конкретных версий - pip install torch==2.2
установка из конкретных registries, множества пакетов, а также с привязкой к версии питона - pip3.10 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
удаление - pip uninstall torch
листинг - pip show torch
через файл с указанием версий, например так:

# requirements.txt
torch==2.2

И последующая установка

pip3.10 install -r requirements.txt

Или удаление

pip3.10 uninstall requirements.txt

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

Единожды создаёте эту самую директорию,

python -m venv .venv

А далее, каждый раз в вашем терминале в папке проекта вызывайте . .venv/bin/activate, чтобы питон знал, что сейчас он работает с локальными модулями вместо глобальных


Во-вторых, pipx, который делает тоже самое что и pip, но уже сразу с venv

Во-третьих, poetry, который еще и в сборку умеет и в отслеживание зависимостей и огромную кучу всего
pipx install poetry==1.2.0

Есть там еще приколу вроде inject-а зависимостей, например


pipx inject ipython matplotlib


Чтобы доставить matplotlib к ipython

В-четверых, setuptools в роли такого же file-based указателя зависимостей
pip install setuptools

А далее в pyproject.toml указываем зависимости


[project]
name = "mypackage"
version = "0.0.1"
dependencies = [
"requests",
'importlib-metadata; python_version<"3.10"',
]

И можем собирать python -m build

В-пятых, conda, с лицензией BSD, между прочим
Создание виртуальных окружений

conda create -n digitable python=3

Использование окружения

source activate digitable

И установка разумеется conda install numpy

В-шестых, pdm, мне он нравится больше

Старт проекта - pdm init

Установка зависимостей


pdm add requests flask


В-седьмых, pyflow, на его вдохновении был создан pdm работает по сути также как и pipx, список команд такой же примерно

По сути на большей части проектов используется обычный `pip`, `pipx` или `poetry`
Что интересно, это то, что коммьюнити питона-петона-удава-петухона никак не можем договориться делать что-то одно, хотя тот же javascript тоже в ту же степь пошел, теперь там `yarn`, `npm`, `pnpm` и имхо из-за вендорства Microsoft над Typescript скоро будет `nuget`, хотя ЕМНИП npm теперь тоже им принадлежит
More from @digitable_blog
  1. Oct 8, 2026#speaker #conference #it #development #innopolis #advancedprompting #профессиональныйпромп…
  2. Sep 15, 2026Post #327
  3. Sep 4, 2026#games #steam #novel #casual В стиме сейчас анонсировали выход "Преступление и Наказание"…
  4. Sep 1, 2026#courses #features #calendar #planning #yearplanning На портале courses.digitable.ru появи…
  5. Aug 25, 2026#games #steam #arcade #casual Сегодня вышла в Steam (скоро и в Yandex Games, Ap Store, VK,…
  6. Aug 24, 2026#материалы #обучение #ИИ #llm #courses Зачем учиться, если модель пишет код быстрее вас и…
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 →