Pipenv: 人間のためのPython開発ワークフロー¶
Pipenv は、全てのパッケージングの世界 (bundler、composer、npm、cargo、yarnなどなど。) における最高のものをPythonの世界にもたらすことを目的としたツールです。我々の世界ではWindowsは第一級市民です。
Pipenvは、手動でパッケージのインストールおよびアンインストールを行うのと同じようにPipfile
に対してパッケージの追加および削除を行うのに加え、自動でプロジェクト用の仮想環境を作成し管理します。またPipenvは、いかなるときも重要なPipfile.lock
を生成し、これを利用しビルドが常に同じ結果になるようにします。
Pipenvは主にアプリケーションのユーザーと開発者に、簡単に作業環境を作れる方法を提供するためのツールです。ライブラリとアプリケーションの違いや、依存関係を定義するためのsetup.py
とPipfile
の使い方の違いについては、☤ Pipfile vs setup.py を参照してください。

Pipenvは様々な側面を持つ問題を解決しようとしています:
- もう
pip
とvirtualenv
を別々に使う必要はありません。両者は連係して動作します。 requirements.txt
ファイルの管理は問題になり得る ので、代わりにPipenvはPipfile
およびPipfile.lock
を使い、最小限の依存関係の宣言と直前にテストした依存関係の組み合わせを区別します。- ハッシュがどこでもいつでも使われます。安心安全。そして、自動でセキュリティの脆弱性を白日の下に晒します。
- 依存パッケージの最新バージョンを使うことで古いコンポーネントが引き起こす セキュリティリスクを最小化することを強くお薦めします。
- 依存関係グラフを深く理解できるようになります (例えば
$pipenvgraph
)。 .env
ファイルを読み込むことで、開発ワークフローの能率を上げます。
You can quickly play with Pipenv right in your browser:
さぁ今すぐこれからPipenvをインストール!¶
If you're on MacOS, you can install Pipenv easily with Homebrew. You can also use Linuxbrew on Linux using the same command:
$ brew install pipenv
あるいは、Fedora 28を使っている場合には次のようにします:
$ sudo dnf install pipenv
それ以外の場合は、☤ Pipenvのインストール の章の手順を参照してください。
✨🍰✨
ユーザーによる推薦文¶
- David Gang—
- このパッケージマネージャーは本当に素晴しい。どんな依存関係があり、そのうちのどれが私がインストールしたもので、どれが推移的依存関係なのかを初めて認識できた。インストールが決定論的であることも相俟って、cargoのような一級品のパッケージマネージャーとなっている 。
- Justin Myles Holmes—
- Pipenvは遂に、単なるファイルシステムとではなく思考と結び付くための抽象化を果たした。
☤ Pipenvの特徴¶
- 何をしたいか を簡単に指定するだけで、真の決定論的ビルド が可能です。
- 固定された依存関係のファイルハッシュを生成しチェックします。
pyenv
が使える場合は、要求されているPythonを自動でインストールします。Pipfile
を探して、再帰的に、プロジェクトホームを自動で見付けに行きます。Pipfile
が存在していない場合、自動で生成します。- 標準的な場所に仮想環境を自動で作成します。
- パッケージがインストールもしくはアンインストールされたときに、自動で
Pipfile
に追加および削除します。 .env
ファイルが存在する場合、自動で読み込みます。
主なコマンドはinstall
、uninstall
、lock
で、lock
コマンドはPipfile.lock
を生成します。これらは、手動での仮想環境の管理 (仮想環境を有効にするための$pipenvshell
の実行) だけでなく、$pipinstall
の使用も置き換えるために作られています。
基本コンセプト¶
- 既存の仮想環境が存在しないときは、自動で作成されます。
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 usingexit
.run
は、与えられたコマンドに任意の引数を付けて仮想環境で実行します(例えば$pipenvrunpython
や$pipenvrunpipfreeze
)。check
はセキュリティの脆弱性をチェックし、現在の環境がPEP 508の要求仕様を満たしていることを表明します。
より進んだ内容のドキュメントガイド¶
- Pipenvの基本的な使い方
- Pipenvの進んだ使い方
- ☤ 注意書き
- ☤ パッケージの一覧を指定する
- ☤ PyPIミラーを使う
- ☤ 環境変数でPipfileにクレデンシャルを差し込む
- ☤ 基本的な事項の指定
- ☤ pipenvをデプロイで使う
- ☤ PipenvとCPython以外のPythonディストリビューション
- ☤
requirements.txt
の生成 - ☤ セキュリティの脆弱性の検知
- ☤ コミュニティとの連係
- ☤ エディタでモジュールを開く
- ☤ Pythonの自動インストール
- ☤
.env
の自動読み込み - ☤ 独自のスクリプトショートカット
- ☤ 環境変数のサポート
- ☤ 環境変数による設定
- ☤ 仮想環境の独自の配置場所
- ☤ プロジェクトのテスト
- ☤ シェルの補完
- ☤ プラットフォームが提供するPythonコンポーネントを使っての作業
- ☤ Pipfile vs setup.py
- ☤ Pipenvのキャッシュの場所を変更する
- ☤ Pythonのデフォルトバージョンを変更する
- Pipenv CLI Reference
- Pipenvでよく出喰わす問題
- ☤ Your dependencies could not be resolved (依存関係が解決できない)
- ☤ <モジュール名> というモジュールが無い
- ☤ pyenvでインストールしたPythonが見付からない
- ☤ PipenvがpyenvのglobalおよびlocalのPythonバージョンを考慮しない
- ☤ ValueError: unknown locale: UTF-8 (未知のロケール: UTF-8)
- ☤ /bin/pip: No such file or directory (そのようなファイルまたはディレクトリはありません)
- ☤
shell
で仮想環境名がプロンプトに出ない - ☤ Pipenvがsetup.pyにある依存関係を考慮しない
- ☤ supervisorプログラムで
pipenvrun
を使う - ☤
Lockingdependencies…
となっている間に例外が送出される