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
を使い、最小限の依存関係の宣言と直前にテストした依存関係の組み合わせを区別します。- ハッシュがどこでもいつでも使われます。 安心安全。 そして、自動でセキュリティの脆弱性を白日の下に晒します。
- 依存パッケージの最新バージョンを使うことで 古いコンポーネントが引き起こす セキュリティリスクを最小化することを強くお薦めします。
- 依存関係グラフを深く理解できるようになります (例えば
$ pipenv graph
)。 .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のインストール の章の手順を参照してください。
✨🍰✨
ユーザーによる推薦文¶
- 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
ファイルが存在する場合、自動で読み込みます。
主なコマンドは install
、 uninstall
、 lock
で、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 usingexit
.run
は、与えられたコマンドに任意の引数を付けて仮想環境で実行します(例えば$ pipenv run python
や$ pipenv run pip freeze
)。check
はセキュリティの脆弱性をチェックし、現在の環境がPEP 508の要求仕様を満たしていることを表明します。
より進んだ内容のドキュメントガイド¶
- Pipenvの基本的な使い方
- Pipenvの進んだ使い方
- ☤ 注意書き
- ☤ パッケージの一覧を指定する
- ☤ PyPIミラーを使う
- ☤ 環境変数でPipfileにクレデンシャルを差し込む
- ☤ 基本的な事項の指定
- ☤ pipenvをデプロイで使う
- ☤ PipenvとCPython以外のPythonディストリビューション
- ☤
requirements.txt
の生成 - ☤ セキュリティの脆弱性の検知
- ☤ コミュニティとの連係
- ☤ エディタでモジュールを開く
- ☤ Pythonの自動インストール
- ☤
.env
の自動読み込み - ☤ 独自のスクリプトショートカット
- ☤ 環境変数のサポート
- ☤ 環境変数による設定
- ☤ 仮想環境の独自の配置場所
- ☤ プロジェクトのテスト
- ☤ シェルの補完
- ☤ プラットフォームが提供するPythonコンポーネントを使っての作業
- ☤ Pipfile vs setup.py
- ☤ Pipenvのキャッシュの場所を変更する
- ☤ Pythonのデフォルトバージョンを変更する
- 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プログラムで
pipenv run
を使う - ☤
Locking dependencies…
となっている間に例外が送出される
貢献のためのガイド¶
☤ 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
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