LINUX.ORG.RU

Python альтернатива pip

 ,


2

3

Ситуация: есть проект, я использую какой-то набор модулей, некоторые из них, например, pylint нужны только для работы IDE.

Что я сейчас делаю:

mkdir -p /path/to/project
cd /path/to/project
# Создадим виртуальное окружение
python -m venv .venv
# Активируем виртуальное окружение
. .venv/bin/activate
# Далее мы установим модули, нужные только при разработке
pip install pylint
# Сохраним список модулей в отдельный файл
pip freeze > dev-requirements.txt

Далее понадобится вспомогательная команда, ее нужно добавить в ~/.bashrc либо ~/.zshrc:

alias pip-freeze-ignore-dev='pip freeze | grep -vFxf dev-requirements.txt'

Теперь можем установит, необходимые в проекте модули:

pip install aiohttp aiodns cchardet gunicorn

Теперь сохраним список модулей:

pip-freeze-ignore-dev > requirements.txt

Я тут задумался, а может есть способы легче/проще/лучше? А Может я чего-то не знаю. Напрмер, pip freeze сохраняет совершенно ненужные зависимости, да и версии библиотек не особо нужны.

★★

Т.е. тебе нужно где-то перечислить дев-зависимости?

WitcherGeralt ★★
()

Используй nix, опиши эти два окружения отдельно =)

t184256 ★★★★★
()

, да и версии библиотек не особо нужны.

через пару лет твои скрипты работать не буждут

Jopich1
()

poetry умеет отделять dev зависимости

grazor ★★
()

Напрмер, pip freeze сохраняет совершенно ненужные зависимости, да и версии библиотек не особо нужны.

Кто мешает делать requirements.dev.txt и усе...

dem ★★
()

Ты мне лучше скажи как ты проверишь что версия пакета не форспушем изменилась? Где hash? Да и вообще в pip хоть и справляется со своей работай, но он не реально убог в контроле целостности. Даже всякие pipenv.lock и poetry.lock не помогают т.к. из коробки не работают.

deterok ★★★★★
()
Ответ на: комментарий от dem

Я недавно поднимал эту тему в питонячьем слаке. Да, там тоже топили за poetry и за не нужно. По сути после того когда понимаешь как удобны lock-файлы и после ловли проблем с глючными проектами ты начинаешь тих ненавидеть текущий способ сборки (личное мнение).

deterok ★★★★★
()
Последнее исправление: deterok (всего исправлений: 1)

pip freeze сохраняет совершенно ненужные зависимости

Юзай pip-compile из pip-tools, он сохраняет только нужные зависимости.

версии библиотек не особо нужны

Нужны. Кот не понял, тот поймёт.

anonymous
()
Ответ на: комментарий от deterok

Где hash?

Ты не поверишь, но pip-compile умеет генерировать requirements.txt с хэшами, и их поддерживает стандартный pip искаропки.

anonymous
()
Ответ на: комментарий от deterok

Да нет пипенв неудобен потому, что он лепит либы в /home И еще там какие то мелочи. Node.js какой то... Я хочу сделать virtualenv и перенести его на другой компьютер и получить то что хочу. Дедупликация если мне нужна, то это я сам уже решу.... Докером как пример.

dem ★★
()
Ответ на: комментарий от dem

Проблема: управление зависимостями для продакшена и разработки. Во время разработки используются, например, pylint и pytest. Эти модули не нужны конечному пользователю. pip freeze по-мимо самих библиотек сохраняет кучу зависимостей, что не позволяет убирать лишнее requirements.txt.

Решения:

  1. Использовать pip-tools. pip-compile генерирует requirements.txt из requirements.in и setup.py. Т.е. в нем предлагается вручную прописывать зависимости.
  2. pipenv - очередное из серии %SomeShit% for Humans. Проблему в принципе решает. Аналог npm. Умеет создавать виртуальные окружения.
  3. poetry.
tz4678 ★★
() автор топика
Ответ на: комментарий от tz4678

это я обобщил, написанное в треде.

tz4678 ★★
() автор топика
Ответ на: комментарий от tz4678

Ну про аналог npm даже обидно. Поэтри да. Я лично пип использую и есть дев реквайрментс и не дев и не парюсь

dem ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.