Pipenv は、多数のシステムをサポートし、pip、python (システム python、pyenv、または asdf を使用)、virtualenv の間のギャップをうまく橋渡しする Python virtualenv 管理ツールです。 Linux、macOS、Windows はすべて、pipenv の第一級市民です。
Pipenv は、プロジェクトの virtualenv を自動的に作成して管理するだけでなく、パッケージをインストール/アンインストールするときにPipfile
にパッケージを追加/削除します。また、決定論的ビルドの生成に使用されるプロジェクトPipfile.lock
も生成されます。
Pipenv は主に、アプリケーションのユーザーと開発者に、一貫した作業プロジェクト環境を実現するための簡単な方法を提供することを目的としています。
Pipenv が解決しようとしている問題は多面的です。
pip
とvirtualenv
別々に使用する必要はなくなりました。これらは連携して機能します。requirements.txt
ファイルの管理には問題が生じる可能性があります。 Pipenv は、 Pipfile
とPipfile.lock
を使用して、最後にテストされた組み合わせから抽象依存関係宣言を分離します。$ pipenv graph
など) についての洞察が得られます。.env
ファイルを使用したローカルのカスタマイズをサポートすることで、開発ワークフローを合理化します。 ピペンブ
インストール
特徴
基本概念
その他のコマンド
シェルの完成
使用法
使用例
コマンド
プロジェクトを見つける
virtualenv を見つけます
Python インタープリターを見つける
パッケージのインストール
gitからインストールする
開発依存関係をインストールする
依存関係グラフを表示する
ロックファイルを生成する
すべての開発依存関係をインストールする
すべてをアンインストールする
シェルを使用する
ドキュメント
Pipenv は Python 3.7 以降でインストールできます。
ほとんどのユーザーには、 pip
使用して Pipenv をインストールすることをお勧めします。
pip install --user pipenv
または、FreeBSD を使用している場合:
pkg install py39-pipenv
または、Gentoo を使用している場合:
sudo emerge pipenv
または、Void Linux を使用している場合:
sudo xbps-install -S python3-pipenv
あるいは、Pipx の使用を好むユーザーもいます。
pipx install pipenv
または、Python pip モジュールの使用を好むユーザーもいます。
python -m pip install pipenv
最新の手順についてはドキュメントを参照してください。
?
pyenv
またはasdf
が利用可能な場合は、必要な Python を自動的にインストールします。Pipfile
を検索することで、プロジェクトのホームを再帰的に自動的に見つけます。Pipfile
が存在しない場合は、自動的に生成します。Pipfile
にパッケージを自動的に追加/削除します。.env
ファイルが存在する場合は、自動的にロードします。コマンドのリファレンスについては、「コマンド」を参照してください。
install
にパラメータが渡されない場合、指定されたすべてのパッケージ[packages]
がインストールされます。Fish で補完を有効にするには、これを構成~/.config/fish/completions/pipenv.fish
に追加します。
eval (env _PIPENV_COMPLETE=fish_source pipenv)
サブシェルを自動的にアクティブ化する Fish プラグインもあります。
あるいは、zsh を使用して、これを構成~/.zshrc
に追加します。
eval "$(_PIPENV_COMPLETE=zsh_source pipenv)"
あるいは、bash を使用する場合は、これを構成~/.bashrc
または~/.bash_profile
に追加します。
eval "$(_PIPENV_COMPLETE=bash_source pipenv)"
Magic Shell の補完が有効になりました。
$ pipenv --help
Usage: pipenv [OPTIONS] COMMAND [ARGS]...
Options:
--where Output project home information.
--venv Output virtualenv information.
--py Output Python interpreter information.
--envs Output Environment Variable options.
--rm Remove the virtualenv.
--bare Minimal output.
--man Display manpage.
--support Output diagnostic information for use in
GitHub issues.
--site-packages / --no-site-packages
Enable site-packages for the virtualenv.
[env var: PIPENV_SITE_PACKAGES]
--python TEXT Specify which version of Python virtualenv
should use.
--clear Clears caches (pipenv, pip). [env var:
PIPENV_CLEAR]
-q, --quiet Quiet mode.
-v, --verbose Verbose mode.
--pypi-mirror TEXT Specify a PyPI mirror.
--version Show the version and exit.
-h, --help Show this message and exit.
Create a new project using Python 3.7, specifically:
$ pipenv --python 3.7
Remove project virtualenv (inferred from current directory):
$ pipenv --rm
Install all dependencies for a project (including dev):
$ pipenv install --dev
Create a lockfile containing pre-releases:
$ pipenv lock --pre
Show a graph of your installed dependencies:
$ pipenv graph
Check your installed dependencies for security vulnerabilities:
$ pipenv check
Install a local setup.py into your virtual environment/Pipfile:
$ pipenv install -e .
Use a lower-level pip command:
$ pipenv run pip freeze
check Checks for PyUp Safety security vulnerabilities and against
PEP 508 markers provided in Pipfile.
clean Uninstalls all packages not specified in Pipfile.lock.
graph Displays currently-installed dependency graph information.
install Installs provided packages and adds them to Pipfile, or (if no
packages are given), installs all packages from Pipfile.
lock Generates Pipfile.lock.
open View a given module in your editor.
requirements Generate a requirements.txt from Pipfile.lock.
run Spawns a command installed into the virtualenv.
scripts Lists scripts in current environment config.
shell Spawns a shell within the virtualenv.
sync Installs all packages specified in Pipfile.lock.
uninstall Uninstalls a provided package and removes it from Pipfile.
update Runs lock, then sync.
upgrade Update the lock of the specified dependency / sub-dependency,
but does not actually install the packages.
verify Verify the hash in Pipfile.lock is up-to-date.
$ pipenv --where
/Users/kennethreitz/Library/Mobile Documents/com~apple~CloudDocs/repos/kr/pipenv/test
$ pipenv --venv
/Users/kennethreitz/.local/share/virtualenvs/test-Skyy4vre
$ pipenv --py
/Users/kennethreitz/.local/share/virtualenvs/test-Skyy4vre/bin/python
$ pipenv install
Creating a virtualenv for this project...
...
No package provided, installing all dependencies.
Virtualenv location: /Users/kennethreitz/.local/share/virtualenvs/test-EJkjoYts
Installing dependencies from Pipfile.lock...
...
To activate this project's virtualenv, run the following:
$ pipenv shell
次のルールに従ってフォーマットされた URL を使用して、git および他のバージョン管理システムから Pipenv を使用してパッケージをインストールできます。
<vcs_type>+<scheme>://<location>/<user_or_organization>/<repository>@<branch_or_tag>#<package_name>
唯一のオプションのセクションは@<branch_or_tag>
セクションです。 SSH 経由で git を使用する場合、短縮形の vcs およびスキーム エイリアスgit+git@<location>:<user_or_organization>/<repository>@<branch_or_tag>#<package_name>
を使用できます。これは、解析時にgit+ssh://git@<location>
に変換されることに注意してください。
<vcs_type>
の有効な値には、 git
、 bzr
、 svn
、およびhg
が含まれます。 <scheme>
の有効な値にはhttp,
、 https
、 ssh
、およびfile
が含まれます。特定のケースでは、他のスキームにもアクセスできます。 svn
スキームとしてsvn
と組み合わせることができ、 bzr
sftp
およびlp
と組み合わせることができます。
依存関係の解決を実行するたびにリポジトリの最新のコピーを使用して確実に実行できるようにするために、バージョン管理された依存関係は、 pipenv install -e
使用して編集可能モードでインストールすることを強くお勧めします。既知の依存関係がすべて含まれていること。
以下は、タグv2.19.1
からhttps://github.com/requests/requests.git
にある git リポジトリをパッケージ名requests
としてインストールする使用例です。
$ pipenv install -e git+https://github.com/requests/[email protected]#egg=requests
Creating a Pipfile for this project...
Installing -e git+https://github.com/requests/[email protected]#egg=requests...
[...snipped...]
Adding -e git+https://github.com/requests/[email protected]#egg=requests to Pipfile's [packages]...
[...]
pip の vcs サポートの実装について詳しくは、こちらをご覧ください。
$ pipenv install pytest --dev
Installing pytest...
...
Adding pytest to Pipfile's [dev-packages]...
$ pipenv graph
requests==2.18.4
- certifi [required: >=2017.4.17, installed: 2017.7.27.1]
- chardet [required: >=3.0.2,<3.1.0, installed: 3.0.4]
- idna [required: >=2.5,<2.7, installed: 2.6]
- urllib3 [required: <1.23,>=1.21.1, installed: 1.22]
$ pipenv lock
Assuring all dependencies from Pipfile are installed...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Note: your project now has only default [packages] installed.
To install [dev-packages], run: $ pipenv install --dev
$ pipenv install --dev
Pipfile found at /Users/kennethreitz/repos/kr/pip2/test/Pipfile. Considering this to be the project home.
Pipfile.lock out of date, updating...
Assuring all dependencies from Pipfile are installed...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
$ pipenv uninstall --all
No package provided, un-installing all dependencies.
Found 25 installed package(s), purging...
...
Environment now purged and fresh!
$ pipenv shell
Loading .env environment variables...
Launching subshell in virtual environment. Type 'exit' or 'Ctrl+D' to return.
$ ▯
Pipenv が解決する問題を理解するには、Python パッケージ管理がどのように進化したかを示すことが役立ちます。
最初の Python 反復に戻ってください。 Python はありましたが、パッケージをインストールするきれいな方法はありませんでした。
次に、他の Python パッケージを比較的簡単にインストールするパッケージである Easy Install が登場しました。しかし、これには落とし穴がありました。不要になったパッケージをアンインストールするのは簡単ではありませんでした。
pip と入力します。これは、ほとんどの Python ユーザーがよく知っています。 pip を使用すると、パッケージをインストールおよびアンインストールできます。バージョンを指定し、 pipフリーズ >requirements.txt を実行して、インストールされているパッケージのリストをテキストファイルに出力し、その同じテキストファイルを使用して、pip install -rrequirements.txt を使用してアプリに必要なものすべてをインストールできます。
しかし、pip にはパッケージを相互に分離する方法が含まれていませんでした。同じライブラリの異なるバージョンを使用するアプリに取り組む可能性があるため、それを有効にする方法が必要でした。
Pipenv は、いくつかの問題を解決することを目的としています。まず、パッケージのインストールに pip ライブラリ、さらに仮想環境を作成するためのライブラリ、仮想環境を管理するためのライブラリ、さらにそれらのライブラリに関連するすべてのコマンドが必要になるという問題があります。管理しなければならないことがたくさんあります。 Pipenv にはパッケージ管理と仮想環境のサポートが付属しているため、1 つのツールを使用して依存関係のインストール、アンインストール、追跡、文書化、および仮想環境の作成、使用、整理を行うことができます。 Pipenv を使用してプロジェクトを開始すると、まだ使用していない場合は、そのプロジェクト用の仮想環境が自動的に作成されます。
Pipenv は、requirements.txt 標準を放棄し、Pipfile と呼ばれる新しいドキュメントに置き換えることで、この依存関係の管理を実現します。 Pipenv を使用してライブラリをインストールすると、プロジェクトの Pipfile がそのインストールの詳細 (バージョン情報、場合によっては Git リポジトリの場所、ファイル パス、その他の情報を含む) で自動的に更新されます。
第 2 に、Pipenv は複雑な相互依存関係の管理を容易にしたいと考えています。
Pipfile を提供する Pipenv を使用すると、さまざまな環境の依存関係を管理することで、これらの問題を回避できます。このコマンドは、メイン プロジェクトの依存関係をインストールします。
Pipenv インストール
--dev タグを追加すると、開発/テスト要件がインストールされます。
Pipenv install --dev Pipfile.lock ファイルを生成するには、次のコマンドを実行します。
ピペンブロック
Pipenv を使用して Python スクリプトを実行することもできます。 hello.py というトップレベルの Python スクリプトを実行するには、次のコマンドを実行します。
Pipenv Python hello.py を実行
期待した結果がコンソールに表示されます。
シェルを開始するには、次を実行します。
Pipenv シェル
現在requirements.txtファイルを使用しているプロジェクトをPipenvを使用するように変換したい場合は、Pipenvをインストールして次を実行します。
Pipenv インストール要件.txt
これにより、Pipfile が作成され、指定された要件がインストールされます。
ドキュメントは、pipenv.pypa.io にあります。