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

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

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

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

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

$ brew install pipenv

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

$ sudo apt install software-properties-common python-software-properties
$ sudo add-apt-repository ppa:pypa/ppa
$ sudo apt update
$ sudo apt install pipenv

使っていないなら、pipを使いましょう:

$ pip install pipenv

✨🍰✨

ユーザーによる推薦文

Jannis Leidel、前pipメンテナー—
Pipenvは、私が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 は仮想環境が有効化されたシェルを起動します。
  • 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

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

--three, --two

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

--python <python>

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

--site-packages

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

--version

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

check

pipenv check [OPTIONS] [ARGS]...

オプション

--three, --two

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

--python <python>

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

--system

システムのPythonを使います。

--unused <unused>

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

引数

ARGS

オプションの引数

clean

pipenv clean [OPTIONS]

オプション

-v, --verbose

冗長モード。

--three, --two

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

--python <python>

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

--dry-run

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

graph

pipenv graph [OPTIONS]

オプション

--bare

出力を最小限にします。

--json

JSONを出力します。

--reverse

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

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>

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

-v, --verbose

冗長モード。

--ignore-pipfile

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

--sequential

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

--skip-lock

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

--deploy

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

--pre

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

--keep-outdated

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

--selective-upgrade

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

引数

PACKAGE_NAME

オプションの引数

MORE_PACKAGES

オプションの引数

lock

pipenv lock [OPTIONS]

オプション

--three, --two

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

--python <python>

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

-v, --verbose

冗長モード。

-r, --requirements

requirements.txtと互換性のある出力を生成します。

-d, --dev

開発用の依存パッケージのrequirements.txtと互換性のある出力を生成します。

--clear

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

--pre

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

--keep-outdated

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

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

オプションの引数

sync

pipenv sync [OPTIONS]

オプション

-v, --verbose

冗長モード。

-d, --dev

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

--three, --two

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

--python <python>

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

--bare

出力を最小限にします。

--clear

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

--sequential

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

uninstall

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

オプション

--three, --two

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

--python <python>

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

--system

システムのpipの管理。

-v, --verbose

冗長モード。

--lock

後でロックします。

--all-dev

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

--all

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

--keep-outdated

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

引数

PACKAGE_NAME

オプションの引数

MORE_PACKAGES

オプションの引数

update

pipenv update [OPTIONS] [MORE_PACKAGES]... [PACKAGE]

オプション

--three, --two

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

--python <python>

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

-v, --verbose

冗長モード。

-d, --dev

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

--clear

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

--bare

出力を最小限にします。

--pre

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

--keep-outdated

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

--sequential

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

--outdated

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

--dry-run

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

引数

MORE_PACKAGES

オプションの引数

PACKAGE

オプションの引数