Pundle — bundler для python

в 15:39, , рубрики: bundler, python, virtualenv

Начну с пиара другого проекта, который мне очень нравится использовать — pyenv. Это порт rbenv для python, который служит для установки нужных версий python в папку пользователя в недра ~/.pyenv, и активации нужной версии руками или, что более грамотно, через файл .pyenv-version в папке проекта.

Следуя этой старой доброй традиции обмениваться здравыми идеями с ruby сообществом, я решил портировать идею Bundler (http://bundler.io/), и назвал его Pundle. Это вторая часть рабочего процесса связанного с версиями интерпретаторов и пакетов в руби, и как и первая, достаточно разумна.

Главная идея pundle в том, чтобы не создавать отдельную директорию на каждую комбинацию версий пакетов как в virtualenv, а вместо этого поставить все пакеты в директории типа .pundlerdir/python-version-variant/package-name-2.3.4, и при старте проекта, взяв информацию из frozen.txt, активировать нужные версии пакетов

Это плохо работает с пакетами которые пытаются делать всякие хитрости с раскладыванием .pth файлов в site-packages, но отлично работает с нормальными вариантами. А их подавляющее большинство, ну про хитрые есть время придумать как с ними быть.

Итак, поиграемся:

  > brew install pyenv
  > pyenv install 3.4.1
  > pyenv shell 3.4.1
  > python --version
  Python 3.4.1

Отлично, нужная версия интерпретатора! Вы же уже начали переходить на третью версию чтобы переломить тенденцию к медленному умиранию языка? Тогда следуем дальше, вдохнем больше новизны и создадим файл requirements.txt с содержимым:

trafaret > 0.5
nomad > 1.8

Ну а теперь запустим pundle:

  > pip install pundle
  ...
  > python -m pundle
  Install some packages
  ... много буков, символов, междометий, медитация

На данном этапе мы поставили пакеты и получили файл frozen.txt. Дальше у нас есть два варианта — первый это в файле, которым мы планируем запускать наш проект руками импортировать pundle и попросить его активировать нужные версии проектов.

Я же предпочитаю команду fixate чтобы добавить активацию нужных версий пакетов в usercustomize.py:

  > python -m pundle fixate

С этого момента мы можем запускать интерпретатор и автоматически иметь доступ к нужным версиям пакетов:

  > python
  >>> import nomad
  >>> nomad.__version__
  '1.9'

pyenv тут github.com/yyuu/pyenv
pundle тут github.com/Deepwalker/pundler

Использовать надо на машине разработчика, а не при деплоее. На сервере смысла нет в пяти питонах и в семи джанго.

Я с удовольствием использую оба проекта в реальной работе, и мне очень нравится не возиться с virtualenv и версиями интерпретатора. Но мне немного скучно использовать pundle одному, поэтому я взялся за пиар и приглашаю всех изменить рабочий процесс современного питонера на новый и продвинутый.

Автор: Deepwalker

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js