PipenvでPythonプロジェクトを管理する方法

Pythonのパッケージエコシステムを使用すると、他の何百万もの開発者の作業を簡単なpip installコマンドで活用できます。Pythonの仮想環境では、プロジェクトとそのパッケージを相互に分離できます。

しかし、環境とパッケージを別々にジャグリングするのは扱いにくい場合があります。プロジェクトに特定のパッケージ要件があり、メンテナンスではなく開発に集中したい場合は、二重にそうです。必要なのは、環境とパッケージを一緒に管理する方法です。 

Pipenvは、Python仮想環境とPythonパッケージの管理を1つのツールにまとめます。Pipenvは、各プロジェクトが必要な各パッケージの正しいバージョンを使用し、それらの各パッケージにも正しい依存関係があることを確認します。

さらに、Pipenvは、一緒に移動できるプロジェクトの依存関係のリストを生成し、他のユーザーまたは開発者が同じ方法で同じプロジェクトをセットアップできるようにします。他のユーザーもPipenvをインストールして、Pipenvが管理するプロジェクトを適切にセットアップする必要がありますが、幸い、Pipenvのインストールと使用は簡単です。 

Pipenvのしくみ

通常、Pythonプロジェクトを作成し、そのパッケージに仮想環境を使用する場合、(コマンドを使用してpy -m venv)仮想環境を自分で作成し、 依存関係をインストールし、依存関係を手動で追跡する必要があります。

Pipenvは、これらすべてを半自動で実行する方法を提供します。 Pipenvのコマンドラインインターフェイスを介してパッケージをインストールすると、プロジェクトの仮想環境が作成および管理されます。依存関係は追跡およびロックされ、開発と実行時の依存関係を別々に管理できます。既存の古いrequirements.txtファイルから移行することもできるため、Pipenvを適切に使用するために、プロジェクトを分解して最初からやり直す必要はありません。

他のPythonプロジェクト管理ツール(Poetryなど)とは異なり、Pipenvはプロジェクトの「足場」を管理しないことに注意してください。つまり、Pipenvは、モックテストやドキュメントスタブなどを使用してプロジェクトディレクトリの内部構造を作成するのではなく、主にパッケージと環境の管理に重点を置いています。これにより、オールインワンソリューションではなく、仮想環境とパッケージに焦点を当てたツールが必要な場合は、Pipenvが適しています。

Pipenvを使い始める

Pipenvは、他のほとんどのPythonパッケージと同じ方法でインストールしますpip install --user pipenv--userPipenvが他のシステム全体のパッケージと競合しないようにするために、このオプションをお勧めします。また、Pipenvコマンドが適切な場所にルーティングされるように、ユーザーベースのバイナリディレクトリへのパスをシステムパスに追加する必要があります。

Pipenvをワークフローの一貫した部分にすることを計画している場合は、基盤となるPythonのインストールを可能な限り最小限に抑えることもお勧めします。このアドバイスは、仮想環境を利用するほとんどすべてのPythonインストールに当てはまります。

Pipenvで新しいプロジェクトを設定する

Pipenvを使用して完全に新しいプロジェクトを開始するには、ディレクトリを作成し、プロジェクト用に通常作成するファイルをそのディレクトリに入力するだけです。プロジェクトの足場を作る傾向がある場合は、空のディレクトリから始めることができます。

プロジェクトのパッケージのインストールは、PipenvとPipの違いはそれほどありません。実際、構文はほとんど同じです。プロジェクトディレクトリでコンソールを開き、「」と入力pipenv install してプロジェクトのパッケージをインストールします。パッケージが開発用であることを指定するには、-dフラグを使用します。pip 構文を使用して、パッケージの特定のバージョンを示すことができます(例:)black==13.0b1

Pipenvを使用してパッケージをインストールすると、2つのことが起こります。まず、Pipenvは、このプロジェクトディレクトリ用に仮想環境がすでに作成されているかどうかを確認します。はいの場合、Pipenvはパッケージを既存の仮想環境にインストールします。いいえの場合、Pipenvは、Pipenvの実行に使用されたのと同じエディションのPythonを使用する仮想環境を作成します。仮想環境はプロジェクトディレクトリ自体に作成されないことに注意してください。これは、ユーザープロファイルのPipenvによって管理されているディレクトリに作成されます。

次に、Pipenvは要求されたパッケージを仮想環境にインストールします。インストールが完了すると、Pipenvは、仮想環境を作成する必要がある場合のパスを含め、実行したすべてのことを報告します。

通常、Pipenvが作成する仮想環境へのパスを知る必要はありません。環境をアクティブ化するには、プロジェクトディレクトリに移動し、を使用 pipenv shellして新しいシェルセッションを起動するか、を使用 pipenv run してコマンドを直接実行します。たとえばpipenv run mypy、のコマンドラインツールバージョンを実行するために使用 するかmypymypyツールが仮想環境にインストールされていると想定)、またはpipenv run python -m 仮想環境で使用可能なPythonモジュールを実行するために使用します。

Pipenvとlockfiles

あなたはPipenvでパッケージをインストールした後にディレクトリ内のPEEK、あなたは2つのファイルを参照してくださいよ、PipfilePipfile.lock。どちらもPipenvによって自動生成され、プロジェクト内のパッケージの状態を説明するため、直接編集しないでください。

Pipfile2つのうちの単純なものです。プロジェクトに必要なパッケージ、それらがインストールされている場所(デフォルトはPyPI)、およびすべてを実行するために必要なPythonのバージョンが一覧表示されます。Pipfile.lockより複雑です。各パッケージが、バージョンの詳細およびパッケージから生成されたSHA-256ハッシュとともに一覧表示されます。ハッシュは、インストールされたパッケージが指定されたものと正確に一致することを保証するために使用されます—バージョン番号だけでなく、取得されたコンテンツも同様です。

パッケージ管理にPipenvを使用するプロジェクトで作業する場合は、プロジェクトのバージョン管理リポジトリにファイルを追加する必要がPipfileありPipfile.lockます。プロジェクトのパッケージに加えられた変更は、それらのファイルを変更するため、それらの変更を追跡してバージョン管理する必要があります。

Pipenvプロジェクトを使用する

パッケージ管理にPipenvを使用するプロジェクトのソースリポジトリをダウンロードする場合は、リポジトリの内容をディレクトリに解凍して実行するだけですpipenv install(パッケージ名は必要ありません)。Pipenvは、プロジェクトのファイルPipfilePipfile.lockファイルを読み取り、仮想環境を作成し、必要に応じてすべての依存関係をインストールします。

最後に、Pipenvを使用して、現在requirements.txtファイルを使用しているプロジェクトを管理する場合は、プロジェクトのディレクトリに移動してを実行しpipenv installます。Pipenvはrequirements.txt(または-rフラグを使用してそれを指すことができます)を検出し、 すべての要件をに移行しますPipfile