LoginSignup
12
17

More than 5 years have passed since last update.

Python開発の"常識"として知っておきたい、Pipenv

Posted at

Pipenvとは?

Pythonのプロジェクト管理ツールです。

例えるならば、

  • JavaのMaven/Gradle
  • node.jsのnpm/Yarn
  • Railsのbundler

などに当たるものです。

何ができるのか?

Pipenvは、例えば以下のようなことができます。

  • 本番用/開発用それぞれ向けにライブラリのバージョンを Pipfile に残せます。

    • Pythonそのもののバージョンも含めて、残せます。
    • Pipfile.lockも残して、常に同じ結果にできます。(requirements.txtだけでは大変手間!)
    • バージョンの指定は、requirements.txt同様、厳密にしたり柔軟にしたりできます。
  • Pipfile に合わせて、自動でプロジェクト用の仮想環境を作れます。

    • virtualenvと連携して作成されます。
    • 作った環境は、エディタ(VS CodeやPyCharmなど)からも認識されます。
    • その他ツール(CircleCIやtoxなど)などとの連携も増えてきているようです。
    • もしpyenvをインストールしておけば、指定したPythonバージョンを自動で用意してくれます。
  • Pipfilerequirements.txt からインポート/エクスポートできるので、すぐ始められます。

    • requirements.txtpip freezeで作れるので、なくても大丈夫
    • anacondaなどのPythonディストリビューションを使っていても、再利用できます。

その他機能もあるので、具体的には本家サイトも見てみてください。
2017年ぐらいからの、比較的新しいツールですが、
トップページにあるリンク(目次)を見るだけでも、十分な機能とドキュメントが用意されているのがわかります。

個人的に、使い心地もよく気に入っています。ぜひ使ってみてください。

本家サイト

ドキュメント(英語)
https://pipenv.readthedocs.io/en/latest/

ドキュメント(日本語訳)
https://pipenv-ja.readthedocs.io/ja/translate-ja/

Github
https://github.com/pypa/pipenv

Pipenvを使ってみる

インストール

システム全体に関わるパッケージが壊れないよう、--userオプションを付けています。

$ pip install --user pipenv
気にしない人向け
$ pip install pipenv
Macユーザ向け
$ brew install pipenv

使い方

プロジェクトを新規作成する場合

実行すると、Pipfileが作成されます。

Python3系の場合
$ pipenv --three
Python2系の場合
$ pipenv --two
Pythonのバージョンを指定したい場合
$ pipenv --python 3.6.5

requirements.txtが既にあるプロジェクトの場合

プロジェクトを新規作成する場合と全く同じです。
requirements.txtがあれば読み込んで、Pipfileを作成し、かつインストールも行います。

明示的にパスを指定することも可能です。
-r path/to/requirements.txtを追加してください。

ライブラリを新たにインストールする場合

基本的には、よくあるpipによるインストールコマンドをpipenvに読み替えるだけです。
実行すると、更新されたPipfilePipfile.lockが作成されます。

最新バージョンをインストール
$ pipenv install requests
開発用にインストール
$ pipenv install --dev autopep8
バージョンを厳密に指定
$ pipenv install "requests==2.20.0"
マイナーバージョンの違いを許容
$ pipenv install "requests~=2.20.0" # 2.20.1がインストールされる
開発中のモジュールをeditableモードでインストール(※要setup.py)
$ pipenv install --dev -e .

仮想環境を作成する

git cloneなどでPipfileなどをダウンロードしてきた場合に実行します。
プロジェクトを新規作成する場合を実行済みならば、既に作成済みの状態です。

開発向け仮想環境
$ pipenv install --dev
本番と同じ仮想環境
$ pipenv install
デプロイ(Pipfile.lockを更新せずエラーにする)
$ pipenv install --deploy

もし仮想環境をリセットしたければ、削除して再作成すればよいです。

削除
$ pipenv --rm

仮想環境を使う

1コマンド実行すればよいならば、以下を実行します。

$ pipenv run <コマンド> <オプション>...

作成された仮想環境をactivateするならば、以下を実行します。

$ pipenv shell

もし、よく使うコマンドがあれば、Pipfileにショートカットを書いておくことができます。
CIツールなどと連携する際に有用そうです。

Pipfile
[scripts]
hello = "python -c \"print('Hello')\""

と書いた前提で、以下を実行します。

$ pipenv run hello
出力結果
Hello

requirements.txtを作成する

実行すると、依存ライブラリ含めてバージョン付きで生成されます。

$ pipenv lock -r > requirements.txt

参考

本家サイト

A Better Pip Workflow
https://www.kennethreitz.org/essays/a-better-pip-workflow

pipfile-vs-setuppy
https://pipenv-ja.readthedocs.io/ja/translate-ja/advanced.html#pipfile-vs-setuppy

12
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
17