Pipenv: 人間のためのPython開発ワークフロー

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://img.shields.io/badge/Say%20Thanks!-🦉-1EAEDB.svg

Pipenv は、全てのパッケージングの世界 (bundler、composer、npm、cargo、yarnなどなど。) における最高のものをPythonの世界にもたらすことを目的としたツールです。 我々の世界ではWindowsは第一級市民です。

Pipenvは、手動でパッケージのインストールおよびアンインストールを行うのと同じように Pipfile に対してパッケージの追加および削除を行うのに加え、自動でプロジェクト用の仮想環境を作成し管理します。 またPipenvは、いかなるときも重要な Pipfile.lock を生成し、これを利用しビルドが常に同じ結果になるようにします。

Pipenvは主にアプリケーションのユーザーと開発者に、簡単に作業環境を作れる方法を提供するためのツールです。 ライブラリとアプリケーションの違いや、依存関係を定義するための setup.pyPipfile の使い方の違いについては、 ☤ Pipfile vs setup.py を参照してください。

Pipenvは様々な側面を持つ問題を解決しようとしています:

  • もう pipvirtualenv を別々に使う必要はありません。 両者は連係して動作します。
  • requirements.txt ファイルの管理は 問題になり得る ので、代わりにPipenvは Pipfile および Pipfile.lock を使い、最小限の依存関係の宣言と直前にテストした依存関係の組み合わせを区別します。
  • ハッシュがどこでもいつでも使われます。 安心安全。 そして、自動でセキュリティの脆弱性を白日の下に晒します。
  • 依存パッケージの最新バージョンを使うことで 古いコンポーネントが引き起こす セキュリティリスクを最小化することを強くお薦めします。
  • 依存関係グラフを深く理解できるようになります (例えば $ pipenv graph)。
  • .env ファイルを読み込むことで、開発ワークフローの能率を上げます。

You can quickly play with Pipenv right in your browser:

Try in browser

さぁ今すぐこれからPipenvをインストール!

MacOSを使っている場合は、Homebrewで簡単にPipenvがインストールできます:

$ brew install pipenv

あるいは、Fedora 28を使っている場合には次のようにします:

$ sudo dnf install pipenv

それ以外の場合は、 ☤ Pipenvのインストール の章の手順を参照してください。

✨🍰✨

ユーザーによる推薦文

Jannis Leidel、前pipメンテナー—
Pipenv is the porcelain I always wanted to build for pip. 私の思考回路にピッタリだし、virtualenvwrapperと手作業でのpipの呼び出しのほとんどを置き換えてくれる。是非使うべきだ。
David Gang
このパッケージマネージャーは本当に素晴しい。 どんな依存関係があり、そのうちのどれが私がインストールしたもので、どれが推移的依存関係なのかを初めて認識できた。 インストールが決定論的であることも相俟って、cargoのような一級品のパッケージマネージャーとなっている
Justin Myles Holmes
Pipenvは遂に、単なるファイルシステムとではなく思考と結び付くための抽象化を果たした。

☤ Pipenvの特徴

  • 何をしたいか を簡単に指定するだけで、真の 決定論的ビルド が可能です。
  • 固定された依存関係のファイルハッシュを生成しチェックします。
  • pyenv が使える場合は、要求されているPythonを自動でインストールします。
  • Pipfile を探して、再帰的に、プロジェクトホームを自動で見付けに行きます。
  • Pipfile が存在していない場合、自動で生成します。
  • 標準的な場所に仮想環境を自動で作成します。
  • パッケージがインストールもしくはアンインストールされたときに、自動で Pipfile に追加および削除します。
  • .env ファイルが存在する場合、自動で読み込みます。

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

基本コンセプト

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

他のコマンド

  • graph はインストールされた依存パッケージの依存関係グラフを表示します。
  • shell will spawn a shell with the virtualenv activated. This shell can be deactivated by using exit.
  • run は、与えられたコマンドに任意の引数を付けて仮想環境で実行します(例えば $ pipenv run python$ pipenv run pip freeze)。
  • check はセキュリティの脆弱性をチェックし、現在の環境がPEP 508の要求仕様を満たしていることを表明します。

より進んだ内容のドキュメントガイド

☤ Pipenvの使い方

pipenv

pipenv [OPTIONS] COMMAND [ARGS]...

オプション

--where

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

--venv

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

--py

Pythonインタプリタの情報を出力します。

--envs

環境変数オプションを出力します。

--rm

仮想環境を削除します。

--bare

出力を最小限にします。

--completion

Output completion (to be eval'd).

--man

マニュアルページを表示します。

--support

Output diagnostic information for use in GitHub issues.

--site-packages

仮想環境のsite-packagesを有効にします。

--python <python>

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

--three, --two

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

--clear

Clears caches (pipenv, pip, and pip-tools).

-v, --verbose

冗長モード。

--pypi-mirror <pypi_mirror>

PyPI のミラーを指定します。

--version

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

check

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

pipenv check [OPTIONS] [ARGS]...

オプション

--unused <unused>

コードのパスを与えると、使われていない可能性のある依存関係を表示します。

-i, --ignore <ignore>

安全確認中に特定の脆弱性を無視します。

--python <python>

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

--three, --two

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

--clear

Clears caches (pipenv, pip, and pip-tools).

-v, --verbose

冗長モード。

--pypi-mirror <pypi_mirror>

PyPI のミラーを指定します。

--system

システムのpipの管理。

引数

ARGS

オプションの引数

clean

Pipfile.lockに指定されていない全てのパッケージをアンインストールします。

pipenv clean [OPTIONS]

オプション

--bare

出力を最小限にします。

--dry-run

必須でないパッケージの出力のみを行います。

-v, --verbose

冗長モード。

--three, --two

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

--python <python>

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

graph

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

pipenv graph [OPTIONS]

オプション

--bare

出力を最小限にします。

--json

JSONを出力します。

--json-tree

入れ子の木構造形式のJSONを出力します。

--reverse

逆向きの依存関係グラフ。

install

Installs provided packages and adds them to Pipfile, or (if no packages are given), installs all packages from Pipfile.

pipenv install [OPTIONS] [PACKAGES]...

オプション

--system

システムのpipの管理。

-c, --code <code>

コードからインポートします。

--deploy

Pipfile.lockが古い、もしくはPythonバージョンが間違っている場合に、異常終了します。

--skip-lock

Skip locking mechanisms and use the Pipfile instead during operation.

-e, --editable <editable>

An editable python package URL or path, often to a VCS repo.

--ignore-pipfile

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

--selective-upgrade

指定されたパッケージを更新します。

--pre

プレリリースバージョンのパッケージを許可します。

-r, --requirements <requirements>

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

--extra-index-url <extra_index_url>

URLs to the extra PyPI compatible indexes to query for package lookups.

-i, --index <index>

Target PyPI-compatible package index url.

--sequential

並列ではなく、一度に一つずつ依存パッケージをインストールします。

--keep-outdated

Pipfile.lockの古くなった依存関係が更新されないようにします。

--pre

プレリリースバージョンのパッケージを許可します。

-d, --dev

Install both develop and default packages.

--python <python>

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

--three, --two

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

--clear

Clears caches (pipenv, pip, and pip-tools).

-v, --verbose

冗長モード。

--pypi-mirror <pypi_mirror>

PyPI のミラーを指定します。

引数

PACKAGES

オプションの引数

Environment variables

PIPENV_SKIP_LOCK

Provide a default for --skip-lock

PIP_EXTRA_INDEX_URL

Provide a default for --extra-index-url

PIP_INDEX_URL

Provide a default for -i

lock

Pipfile.lockを生成します。

pipenv lock [OPTIONS]

オプション

-r, --requirements

Generate output in requirements.txt format.

--keep-outdated

Pipfile.lockの古くなった依存関係が更新されないようにします。

--pre

プレリリースバージョンのパッケージを許可します。

-d, --dev

Install both develop and default packages.

--python <python>

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

--three, --two

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

--clear

Clears caches (pipenv, pip, and pip-tools).

-v, --verbose

冗長モード。

--pypi-mirror <pypi_mirror>

PyPI のミラーを指定します。

open

エディタで与えられたモジュールを見ます。

This uses the EDITOR environment variable. You can temporarily override it, for example:

EDITOR=atom pipenv open requests
pipenv open [OPTIONS] MODULE

オプション

--python <python>

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

--three, --two

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

--clear

Clears caches (pipenv, pip, and pip-tools).

-v, --verbose

冗長モード。

--pypi-mirror <pypi_mirror>

PyPI のミラーを指定します。

引数

MODULE

必須の引数

run

仮想環境にインストールされたコマンドを起動します。

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

オプション

--python <python>

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

--three, --two

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

--clear

Clears caches (pipenv, pip, and pip-tools).

-v, --verbose

冗長モード。

--pypi-mirror <pypi_mirror>

PyPI のミラーを指定します。

引数

COMMAND

必須の引数

ARGS

オプションの引数

shell

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

pipenv shell [OPTIONS] [SHELL_ARGS]...

オプション

--fancy

(格調高く設定されたシェルとなるよう) 高機能モードでシェルを実行します。

--anyway

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

--pypi-mirror <pypi_mirror>

PyPI のミラーを指定します。

--three, --two

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

--python <python>

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

引数

SHELL_ARGS

オプションの引数

sync

Pipfile.lockに指定されている全てのパッケージをインストールします。

pipenv sync [OPTIONS]

オプション

--bare

出力を最小限にします。

--sequential

並列ではなく、一度に一つずつ依存パッケージをインストールします。

--keep-outdated

Pipfile.lockの古くなった依存関係が更新されないようにします。

--pre

プレリリースバージョンのパッケージを許可します。

-d, --dev

Install both develop and default packages.

--python <python>

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

--three, --two

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

--clear

Clears caches (pipenv, pip, and pip-tools).

-v, --verbose

冗長モード。

--pypi-mirror <pypi_mirror>

PyPI のミラーを指定します。

uninstall

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

pipenv uninstall [OPTIONS] [PACKAGES]...

オプション

--all-dev

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

--all

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

-e, --editable <editable>

An editable python package URL or path, often to a VCS repo.

--skip-lock

Skip locking mechanisms and use the Pipfile instead during operation.

--keep-outdated

Pipfile.lockの古くなった依存関係が更新されないようにします。

--pre

プレリリースバージョンのパッケージを許可します。

-d, --dev

Install both develop and default packages.

--python <python>

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

--three, --two

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

--clear

Clears caches (pipenv, pip, and pip-tools).

-v, --verbose

冗長モード。

--pypi-mirror <pypi_mirror>

PyPI のミラーを指定します。

引数

PACKAGES

オプションの引数

Environment variables

PIPENV_SKIP_LOCK

Provide a default for --skip-lock

update

ロックを掛けて、同期を取ります。

pipenv update [OPTIONS] [PACKAGES]...

オプション

--bare

出力を最小限にします。

--outdated

古くなった依存関係の一覧を出力します。

--dry-run

古くなった依存関係の一覧を出力します。

-e, --editable <editable>

An editable python package URL or path, often to a VCS repo.

--ignore-pipfile

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

--selective-upgrade

指定されたパッケージを更新します。

--pre

プレリリースバージョンのパッケージを許可します。

-r, --requirements <requirements>

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

--extra-index-url <extra_index_url>

URLs to the extra PyPI compatible indexes to query for package lookups.

-i, --index <index>

Target PyPI-compatible package index url.

--sequential

並列ではなく、一度に一つずつ依存パッケージをインストールします。

--keep-outdated

Pipfile.lockの古くなった依存関係が更新されないようにします。

--pre

プレリリースバージョンのパッケージを許可します。

-d, --dev

Install both develop and default packages.

--python <python>

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

--three, --two

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

--clear

Clears caches (pipenv, pip, and pip-tools).

-v, --verbose

冗長モード。

--pypi-mirror <pypi_mirror>

PyPI のミラーを指定します。

引数

PACKAGES

オプションの引数

Environment variables

PIP_EXTRA_INDEX_URL

Provide a default for --extra-index-url

PIP_INDEX_URL

Provide a default for -i