Каковы эквиваленты Python для упаковщика Ruby / коробки Perl? - PullRequest
89 голосов
/ 04 января 2012

Я знаю о virtualenv и pip.Но они немного отличаются от комплектов / картонных коробок.

Например:

  • pip записывает абсолютный путь к shebang или активирует скрипт
  • pip не имеетсубкоманда exec (bundle exec bar)
  • virtualenv копирует интерпретатор Python в локальный каталог

Каждый ли разработчик Python использует virtualenv / pip?Существуют ли другие инструменты управления пакетами для Python?

Ответы [ 6 ]

70 голосов
/ 05 января 2012

Из того, что я читал о компоновщике - pip без virtualenv должен работать просто отлично Вы можете думать об этом как о чем-то между обычной командой gem и компоновщиком. Общие вещи, которые вы можете сделать с pip:

  1. Установка пакетов (gem install)

    pip install mypackage
    
  2. Зависимости и массовая установка (gemfile)

    Вероятно, самый простой способ - это использовать файлы pip needs.txt. По сути, это просто список необходимых пакетов с возможными ограничениями версий. Это может выглядеть примерно так:

    nose==1.1.2
    django<1.3
    PIL
    

    Позже, когда вы захотите установить эти зависимости, вы должны сделать:

    $ pip install -r requirements.txt
    

    Простой способ увидеть все ваши текущие пакеты в синтаксисе файла требований - это сделать:

    $ pip freeze
    

    Подробнее об этом можно прочитать здесь .

  3. Выполнение (bundler exec)

    Все пакеты Python, которые поставляются с исполняемыми файлами, обычно доступны сразу после установки (если у вас нет пользовательских настроек или это специальный пакет). Например:

    $ pip install gunicorn
    $ gunicorn -h 
    
  4. Пакетные гемы для установки из кэша (пакетный пакет)

    Есть pip bundle и pip zip/unzip. Но я не уверен, что многие люди используют его.

p.s. Если вы заботитесь об изоляции среды, вы также можете использовать virtualenv вместе с pip (они близкие друзья и отлично работают вместе). По умолчанию pip устанавливает пакеты для всей системы, которые могут требовать прав администратора.

12 голосов
/ 14 апреля 2017

Вы можете использовать pipenv , который имеет аналогичный интерфейс с упаковщиком.

$ pip install pipenv

Pipenv автоматически создает virtualenv и устанавливает зависимости от Pipfile или Pipfile.lock.

$ pipenv --three           # Create virtualenv with Python3
$ pipenv install           # Install dependencies from Pipfile
$ pipenv install requests  # Install `requests` and update Pipfile
$ pipenv lock              # Generate `Pipfile.lock`
$ pipenv shell             # Run shell with virtualenv activated

Вы можете запустить команду с областью действия virtualenv, например bundle exec.

$ pipenv run python3 -c "print('hello!')"
4 голосов
/ 26 марта 2014

Есть клон pbundler .

Версия, которая в данный момент находится в pip, просто читает файл requirements.txt, который у вас уже есть, но сильно устарел. Это также не совсем эквивалентно: оно настаивает на создании virtualenv. Я заметил, что Bundler устанавливает только те пакеты, которые отсутствуют, и дает вам возможность предоставить свой пароль sudo для установки в ваши системные директории или перезапустить, что, похоже, не является функцией pbundler.

Тем не менее, версия на git является почти полной перепиской, чтобы быть намного ближе к поведению Бендлера ... включая наличие "Cheesefile" и теперь не поддерживающего файл require.txt. Это прискорбно, так как require.txt является стандартом де-факто в pythonland, и есть даже официальная работа с BDFL-печатью, чтобы стандартизировать его . Когда это вступит в силу, вы можете быть уверены, что что-то вроде pbundler станет стандартом де-факто. Увы, пока нет ничего достаточно стабильного, о чем я знаю (но я бы хотел бы, чтобы оказался неверным).

1 голос
/ 12 января 2018

Я бы сказал, Лопата стоит посмотреть.Он был разработан специально для Pythonish версии Rake.В проекте нет тонны коммитов, но он кажется стабильным и полезным.

1 голос
/ 05 июля 2017

Я написал один - https://github.com/Deepwalker/pundler.На PIP pundle имя уже занято.

Использует requirements(_\w+)?.txt файлы в качестве желаемых зависимостей и создает frozen(_\w+)?.txt файлы с замороженными версиями.

О (_\w+)? вещь -это envs.Вы можете создать require_test.txt, а затем использовать PUNDLEENV=test, чтобы использовать этот deps в своем прогоне вместе с require.txt вместе с..

0 голосов
/ 17 декабря 2015

Нет, не все разработчики используют virtualenv и / или pip, но многие разработчики используют / предпочитают эти инструменты

И теперь, для инструментов разработки пакетов и различных сред, это ваш реальный вопрос.Существуют любые другие инструменты, такие как Buildout (http://www.buildout.org/en/latest/) для той же цели, изолируйте вашу среду сборки Python для каждого проекта, которым вы управляете. Некоторое время я использую это, но не сейчас.

Независимые средыдля каждого проекта Python немного отличается от той же ситуации в Ruby. В моем случае я использую pyenv (https://github.com/yyuu/pyenv), что-то вроде rbenv, но для Python. разные версии python и virtualenvs для проекта, и,в этой изолированной среде я могу использовать pip или просто установить (если это необходимо).

...