web-dev-qa-db-ja.com

Python Rubyのバンドラー/ Perlのカートンに相当するものは何ですか?

Virtualenvとpipについて知っています。しかし、これらはバンドラー/カートンとは少し異なります。

例えば:

  • pipは絶対パスをShebangに書き込むか、スクリプトをアクティブにします
  • pipにはexecサブコマンド(bundle exec bar
  • virtualenvはPythonインタープリターをローカルディレクトリにコピーします

すべてのPython開発者はvirtualenv/pipを使用しますか?Python用の他のパッケージ管理ツールはありますか?

90
riywo

Bundlerについて読んだことから、virtualenvを使用しないpipは問題なく機能するはずです。通常のgemコマンドとバンドラーの間の何かと考えることができます。 pipでできる一般的なこと:

  1. パッケージのインストール(gem install)

    pip install mypackage
    
  2. 依存関係と一括インストール(gemfile)

    おそらく最も簡単な方法は、pipのrequirements.txtファイルを使用することです。基本的に、それは可能なバージョンの制約がある必須パッケージの単なるリストです。次のようになります。

    nose==1.1.2
    Django<1.3
    PIL
    

    後でこれらの依存関係をインストールする場合は、次のようにします。

    $ pip install -r requirements.txt
    

    要件ファイルの構文で現在のパッケージをすべて表示する簡単な方法は、次のとおりです。

    $ pip freeze
    

    詳細については、こちらをご覧ください こちら

  3. 実行(バンドラーexec)

    すべてのpythonパッケージは通常、インストール後に直接利用できます(カスタムセットアップがある場合、または特別なパッケージである場合を除く)。例:

    $ pip install gunicorn
    $ gunicorn -h 
    
  4. キャッシュからインストールするパッケージgem(バンドラーパッケージ)

    がある pip bundleおよびpip Zip/unzip。しかし、多くの人がそれを使用するかどうかはわかりません。

p.s。環境の分離に関心がある場合は、virtualenvをpipと一緒に使用することもできます(親しい友人であり、完全に連携しています)。デフォルトでは、pipはシステム全体にパッケージをインストールしますが、管理者権限が必要になる場合があります。

70
Denys Shabalin

pipenv を使用できます。これには、Bundlerと同様のインターフェースがあります。

$ 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

bundle execのようなvirtualenvスコープでコマンドを実行できます。

$ pipenv run python3 -c "print('hello!')"
13
nonylene

クローンがあります pbundler

現在pipにあるバージョンは、単にrequirements.txtファイルは既に持っていますが、かなり古くなっています。また、完全に同等ではありません:virtualenvを作成することを主張します。 Bundlerは、不足しているパッケージのみをインストールし、システムディレクトリにインストールするSudoパスワードを指定するか、pbundlerの機能ではないように再起動するオプションを提供します。

ただし、gitのバージョンは、「Cheesefile」を含むようになり、requirements.txtをサポートしなくなるなど、Bundlerの動作により近くなるようにほぼ完全に書き直されています。残念ながら、requirements.txtはpythonlandの事実上の標準であり、 標準化 への公式のBDFLスタンプ付きの作業もあります。それが発効すると、pbundlerのようなものが事実上の標準になると確信できます。悲しいかな、私が知っている安定したものはまだありません(しかし、loveが間違っていると証明されるでしょう)。

4
kousu

私はそれを書きました— https://github.com/Deepwalker/pundler 。 PIPでは、pundleという名前が既に使用されています。

requirements(_\w+)?.txtファイルを必要な依存関係として使用し、frozen(_\w+)?.txtファイルを凍結バージョンで作成します。

(_\w+)?事—これはenvです。 requirements_test.txtを作成してからPUNDLEENV=testは、requirements.txtを一緒に実行してこのデップを使用します。

また、virtualenvについては、1つでなくてもかまいません。そのパンドルは、最初のヘッドでバンドラーから取得します。

1

Shovel は一見の価値があります。 Python版のRake専用に開発されました。プロジェクトには大量のコミットアクティビティはありませんが、安定していて便利なようです。

1
Jim Meyer

いいえ、すべての開発者はvirtualenvやpipを使用しませんが、多くの開発者はこれらのツールを使用/優先します

そして今、あなたの本当の質問であるパッケージ開発ツールと異なる環境について。同じ目的でBuildout( http://www.buildout.org/en/latest/ )のような他のツールが存在する場合は、環境を分離してくださいPythonすべてのプロジェクトを管理します。しばらくの間、これを使用しますが、現在は使用していません。

プロジェクトごとの独立した環境では、PythonはRubyの同じ状況とは少し異なります。私の場合、pyenvを使用します( https://github.com/yyuu/pyenv )これはrbenvのようなものですが、Pythonの場合はpythonの異なるバージョンとプロジェクトごとのvirtualenvs、そしてこの隔離された環境では、pipまたはeasy-installを使用できます(必要な場合) )。

0
Yonsy Solis