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

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

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

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

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

  • もう pipvirtualenv を別々に使う必要はありません。 両者は連係して動作します。
  • requirements.txt ファイルの管理は 問題になり得る ので、代わりにPipenvは来たるべき Pipfile および Pipfile.lock を使います。 これらは基本的な場面では requirements.txt に勝るものです。
  • ハッシュがどこでもいつでも使われます。 安心安全。 そして、自動でセキュリティの脆弱性を白日の下に晒します。
  • 依存関係グラフに対する深い洞察を提供します (例えば $ pipenv graph)。
  • .env ファイルを読み込むことで、開発ワークフローの能率を上げます。

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

Pipenv is a python package and so can be installed using pip as you would expect.

$ pip install pipenv
✨🍰✨

If you have excellent taste, there are various other installation methods which prevent pipenv and its dependencies from interfering with the rest of your Python installation. These include Pipsi, Nix and Homebrew.

ユーザーによる推薦文

Jannis Leidel、前pipメンテナー—
Pipenvは、私がpipの開発で作り上げたかった磁器だ。私の思考回路にピッタリだし、virtualenvwrapperと手作業でのpipの呼び出しのほとんどを置き換えてくれる。是非使うべきだ。
Justin Myles Holmes
Pipenv is finally an abstraction meant to engage the mind instead of merely the filesystem.
Isaac Sanders
Pipenv is literally the best thing about my day today. Thanks, Kenneth!

☤ 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 は仮想環境が有効化されたシェルを起動します。
  • run は仮想環境から与えられたコマンドを、それに続く任意の引数で実行します (例えば $ pipenv run python)。
  • check はセキュリティの脆弱性をチェックし、現在の環境がPEP 508の要求仕様を満たしていることを表明します。

☤ Pipenvの使い方

pipenv

pipenv [OPTIONS] COMMAND [ARGS]...

オプション

--update

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

--where

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

--venv

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

--py

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

--envs

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

--rm

仮想環境を削除します。

--bare

出力を最小限にします。

--completion

Output completion (to be eval’d).

--man

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

--three, --two

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

--python <python>

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

--site-packages

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

--jumbotron

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

--version

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

check

pipenv check [OPTIONS] [ARGS]...

オプション

--three, --two

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

--python <python>

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

--unused <unused>

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

--style <style>

コードのパスが与えられると、Flake8のエラーを表示します。

引数

ARGS

オプションの引数

graph

pipenv graph [OPTIONS]

オプション

--bare

出力を最小限にします。

--json

JSONを出力します。

--reverse

Reversed dependency graph.

install

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

オプション

-d, --dev

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

--three, --two

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

--python <python>

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

--system

システムのpipの管理。

-r, --requirements <requirements>

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

-c, --code <code>

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

--verbose

冗長モード。

--ignore-pipfile

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

--sequential

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

--skip-lock

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

--deploy

Abort if the Pipfile.lock is out–of–date, or Python version is wrong.

--pre

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

引数

PACKAGE_NAME

オプションの引数

MORE_PACKAGES

オプションの引数

lock

pipenv lock [OPTIONS]

オプション

--three, --two

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

--python <python>

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

--verbose

冗長モード。

-r, --requirements

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

-d, --dev

Generate output compatible with requirements.txt for the development dependencies.

--clear

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

--pre

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

open

pipenv open [OPTIONS] MODULE

オプション

--three, --two

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

--python <python>

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

引数

MODULE

必須の引数

run

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仮想環境を使うかを指定します。

--fancy

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

--anyway

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

引数

SHELL_ARGS

オプションの引数

uninstall

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

オプション

--three, --two

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

--python <python>

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

--system

システムのpipの管理。

--verbose

冗長モード。

--lock

後でロックします。

--all-dev

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

--all

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

引数

PACKAGE_NAME

オプションの引数

MORE_PACKAGES

オプションの引数

update

pipenv update [OPTIONS] [PACKAGE_NAME]

オプション

-v, --verbose

冗長モード。

-d, --dev

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

--three, --two

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

--python <python>

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

--dry-run

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

--bare

出力を最小限にします。

--clear

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

--sequential

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

引数

PACKAGE_NAME

オプションの引数