Pipenv: Pipfile、Pip、Virtulaenvの神聖な結婚

https://img.shields.io/pypi/v/pipenv.svg https://img.shields.io/pypi/l/pipenv.svg https://img.shields.io/pypi/pyversions/pipenv.svg https://travis-ci.org/kennethreitz/pipenv.svg?branch=master https://img.shields.io/badge/Say%20Thanks!-🦉-1EAEDB.svg

PipenvPython.org が正式に推薦するPythonパッケージングツール、そして (自由としての) フリー。

Pipenvは全てのパッケージングの世界における最高のものをPythonの世界にもたらすことを目的としたプロジェクトです。 Pipenvは Pipfilepipvirtualenv を結び付け一つのツールチェインとしました。 Pipenvにはターミナルの色付けがとても見やすいという特徴があります。 我々の世界ではWindowsは第一級市民です。

Pipenvは、手動でパッケージのインストール/アンインストールをするのと同じように Pipfile に対してパッケージの追加/削除を行うのに加え、自動的にプロジェクト用の仮想環境を作成し管理します。 lock コマンドは、ロックファイル (Pipfile.lock) を生成します。

Pipenvが解決しようとしている問題は多面的なものです:

  • You no longer need to use pip and virtualenv separately. They work together.
  • requirements.txt ファイルの管理は 問題になり得る ので、代わりにPipenvは来たるべき Pipfile および Pipfile.lock を使います。 これらは基本的な場面では requirements.txt に勝るものです。
  • Hashes are used everywhere, always. Security. Automatically expose security vulnerabilities.
  • Give you insight into your dependency graph (e.g. $ pipenv graph).
  • Streamline development workflow by loading .env files.

ユーザーによる推薦文

Jannis Leidel、前pipメンテナー—
pipenvは、私がpipの開発で作り上げたかった磁器だ。私の思考回路にピッタリだし、virtualenvwrapperと手作業でのpipの呼び出しのほとんどを置き換えてくれる。是非使うべきだ。
Jhon Crypt
Pipenvはpip登場以降における最高のものだ、ありがとう!
Isaac Sanders
Pipenv is literally the best thing about my day today. Thanks, Kenneth!

☤ Pipenvの特徴

  • Enables truly deterministic builds, while easily specifying only what you want.
  • Generates and checks file hashes for locked dependencies.
  • Automatically install required Pythons, if pyenv is available.
  • Pipfile を探して、再帰的に、プロジェクトホームを自動で見付けに行きます。
  • Pipfile が存在していない場合、自動で生成します。
  • 標準的な場所に仮想環境を自動で作成します。
  • Automatically adds/removes packages to a Pipfile when they are un/installed.
  • Automatically loads .env files, if they exist.

主なコマンドは installuninstalllock で、lock コマンドは Pipfile.lock を生成します。 これらは、手動での仮想環境の管理 (仮想環境を有効にするための $ pipenv shell の実行) だけでなく、 $ pip install の使用も置き換えるために作られています。

基本コンセプト

  • 既存の仮想環境が存在しないときは、自動で作成されます。
  • install にパラメータが何も渡されないときは、 [packages] に指定された全てのパッケージがインストールされます。
  • Python 3の仮想環境を初期化するには、 $ pipenv --three を実行します。
  • Python 3の仮想環境を初期化するには、 $ pipenv --two を実行します。
  • それ以外は、virtualenvがデフォルトとしているものをPipenvのデフォルトとします。

他のコマンド

  • graph はインストールされた依存パッケージの依存関係グラフを表示します。
  • shell は仮想環境が有効化されたシェルを起動します。
  • run は仮想環境から与えられたコマンドを、それに続く任意の引数で実行します (例えば $ pipenv run python)。
  • check checks for security vulnerabilities and asserts that PEP 508 requirements are being met by the current environment.

☤ Pipenvの使い方

pipenv

pipenv [OPTIONS] COMMAND [ARGS]...

オプション

--update

Pipenvとpipを最新に更新します。

--where

プロジェクトホームの情報を出力します。

--venv

仮想環境の情報を出力します。

--py

Output Python interpreter information.

--rm

仮想環境を削除します。

--bare

出力を最小限にします。

--three, --two

仮想環境を作成するときにPython 3あるいはPython 2を使います。

--python <python>

どのバージョンのPython仮想環境を使うかを指定します。

-h, --help

このメッセージを表示して終了します。

-j, --jumbotron

実質的には、イースターエッグです。

--version

バージョンを表示して終了します。

check

セキュリティの脆弱性とPipfileにあるPEP 508マーカーをチェックします。

pipenv check [OPTIONS]

オプション

--three, --two

仮想環境を作成するときにPython 3あるいはPython 2を使います。

--python <python>

どのバージョンのPython仮想環境を使うかを指定します。

graph

現在インストールされている依存パッケージのグラフ情報を表示します。

pipenv graph [OPTIONS]

オプション

--bare

出力を最小限にします。

--json

Output JSON.

install

引数で与えられたパッケージをインストールして、Pipfileに追加するか、(引数が何も与えられない場合は) 全てのパッケージをインストールします。

pipenv install [OPTIONS] [PACKAGE_NAME] [MORE_PACKAGES]...

オプション

-d, --dev

[dev-packages] にあるパッケージをインストールします。

--three, --two

仮想環境を作成するときにPython 3あるいはPython 2を使います。

--python <python>

どのバージョンのPython仮想環境を使うかを指定します。

--system

System pip management.

-r, --requirements <requirements>

requirements.txtファイルをインポートします。

--verbose

冗長モード。

--ignore-pipfile

インストール時にPipfileを無視し、Pipfile.lockを使います。

--skip-lock

インストール時にバージョン固定の仕組みを無視し、代わりにPipfileを使います。

引数

PACKAGE_NAME

オプションの引数

MORE_PACKAGES

オプションの引数

lock

Pipfile.lockを生成します。

pipenv lock [OPTIONS]

オプション

--three, --two

仮想環境を作成するときにPython 3あるいはPython 2を使います。

--python <python>

どのバージョンのPython仮想環境を使うかを指定します。

--verbose

冗長モード。

-r, --requirements

requirements.txtと互換な出力を生成します。

--clear

依存関係のキャッシュを削除します。

run

Spawns a command installed into the virtualenv.

pipenv run [OPTIONS] COMMAND [ARGS]...

オプション

--three, --two

仮想環境を作成するときにPython 3あるいはPython 2を使います。

--python <python>

どのバージョンのPython仮想環境を使うかを指定します。

引数

COMMAND

必須の引数

ARGS

オプションの引数

shell

仮想環境内でシェルを起動します。

pipenv shell [OPTIONS] [SHELL_ARGS]...

オプション

--three, --two

仮想環境を作成するときにPython 3あるいはPython 2を使います。

--python <python>

どのバージョンのPython仮想環境を使うかを指定します。

-c, --compat

(シェルが間違った設定になっているため) シェル互換モードで実行します。

--anyway

サブシェルを既に起動している場合でも、常にサブシェルを起動します。

引数

SHELL_ARGS

オプションの引数

uninstall

引数で与えられたパッケージをアンインストールし、Pipfileから削除します。

pipenv uninstall [OPTIONS] [PACKAGE_NAME] [MORE_PACKAGES]...

オプション

--three, --two

仮想環境を作成するときにPython 3あるいはPython 2を使います。

--python <python>

どのバージョンのPython仮想環境を使うかを指定します。

--system

System pip management.

--verbose

冗長モード。

--lock

Lock afterwards.

-d, --dev

[dev-packages] にある全てのパッケージをアンインストールします。

--all

仮想環境から全てのパッケージを除去します。 Pipfileは編集しません。

引数

PACKAGE_NAME

オプションの引数

MORE_PACKAGES

オプションの引数

update

Uninstalls all packages, and re-installs package(s) in [packages] to latest compatible versions.

pipenv update [OPTIONS]

オプション

-v, --verbose

冗長モード。

-d, --dev

Additionally install package(s) in [dev-packages].

--three, --two

仮想環境を作成するときにPython 3あるいはPython 2を使います。

--python <python>

どのバージョンのPython仮想環境を使うかを指定します。

--dry-run

最新版でないパッケージの出力のみを行います。

--bare

出力を最小限にします。

--clear

依存関係のキャッシュを削除します。