pipenvを使ってPython開発をする方法【導入方法と使い方】

2020年11月13日

Python
自動化
サーバー

Python開発にpipenvを導入してみた時のお話

どうも、テック備忘LOGのYuki(@tech_bibo_log)です!!

今回はPython開発をより便利にするためにpipenvを導入したときの手順に関する記事です。

Python開発では頻繁にモジュールのインストールを行いますが、プロジェクト毎に必要なモジュールは変化します。

pipenvを使用することで、複数人で開発を行うときや、開発時にインストールしたモジュールを本番環境に準備するとき、さらには開発環境と本番環境で 使用するモジュールの区別をしたいときなどの管理を楽にすることが出来ます。

余談ですが、次の記事では当ブログを作成した時の手順について説明しています。

▽▽▽ Djangoでブログを構築した時のお話し ▽▽▽

2020/5/11

Django + Nginx + uWSGIな環境を構築する!「Hello, World」公開まで。



では早速やっていきましょう!!

[ 目次 (開く) ]

pipenvとは?

「pipenv」とは便利なモジュールの一つで、https://github.com/pypa/pipenvのサイトでは以下のように説明されています。

Pipenv is a tool that aims to bring the best of all packaging worlds (bundler, composer, npm, cargo, yarn, etc.) to the
Python world. Windows is a first-class citizen, in our world.
It automatically creates and manages a virtualenv for your projects, as well as adds/removes packages from your Pipfile
as you install/uninstall packages. It also generates the ever-important Pipfile.lock, which is used to produce deterministic builds. [ by https://github.com/pypa/pipenv ]


要約すると、、、

pipenvは(bundler, composer, npm, cargo, yarn, etc.) などのパッケージング管理ツールでできたことを、Python開発でも可能にするために作られました。 自動的にvirtualenvを生成・管理し、install/uninstallしたパッケージもPipfileにて管理してくれます。

とういことです。
これまではvirtualenvで仮想環境を構築し、pipで必要なモジュールを都度インストールしていたと思いますが、 pipenvを使用することで、それらを同時にやることが出来るようになるということです。

更には、あらかじめPipfileを用意しておけば、指定したモジュールを纏めてインストールしてくれるので大変便利です。

'Pipfile'と'Pipfile.lock'について

pipenvを使用すると必ず目にするこの2つのファイルについて、違いを説明していきます。

Pipfileとは

pipではインストールしたいパッケージを「requirements.txt」というテキストファイルに記述しておく仕組みでしたが、 pipenvはこれの代替として「Pipfile」というテキストファイルを使用します。 試しにrequestsモジュールをインストールするとディレクトリ内にPipfileが作成されていると思います。

./プロジェクトDir/Pipfile
[[source]]
name = "myBlog"
url = "hogehoge"
verify_ssl = true
 
[dev-packages]
 
[packages]
requests = "*"
 
[requires]
python_version = "3.7"
    

次のコマンドを実行することで「Pipfile」内に記述されたパッケージを自動でインストールしてくれます。

# pipenv install


Pipfile.lockとは

このファイルはPipfileと同時に生成されます。
このファイルでは各モジュールのバージョンまで管理しており、複数人で開発するときにモジュールのバージョンまで 完全に一致するものをインストールしたい場合は、このPipfile.lockを使ってインストールすることで実現できます。

次のコマンドを実行することで「Pipfile.lock」内に記述されたパッケージを自動でインストールしてくれます。

# pipenv sync


pipenvの導入方法

これからpipenvのインストールが完了するまでの手順を説明していきます。

1.pipenvをインストールしよう!

# pip install pipenv


2.初期化しよう!

pipenvでプロジェクトを管理するために、まずはプロジェクトのディレクトリに移動して次のコマンドを実行します。

# pipenv --python 3  # Python3系で初期化する例です
# pipenv --python 3.6  # Python3.6で初期化する例です


3.ライブラリのバージョンについて

次のコマンドpipenv install [name]でライブラリをインストールする際にバージョンを指定することも可能です。
ここでは[requests]のバージョン(2.20.0)をインストールしています。 ※指定しない場合は、最新版がインストールされます。

# pipenv install ライブラリ名==2.20.0
# pipenv uninstall ライブラリ名   # アンインストールのコマンド


4.ライブラリをインストールをしよう!

pipenvを使ってサードパーティライブラリをインストールしてみます。
今回はrequestsをインストールしてみましょう。

※Pipfileにはインストールしたライブラリ、Pipfile.lockにはバージョンを含めたライブラリ情報が記述されていると思います。

# pipenv install requests


5.開発用のライブラリをインストールをしよう!

開発時のみに使用し本番環境では必要のないライブラリをインストールする場合は、 次のように--devオプションを使用することでインストールできます。

※PipfileやPipfile.lockの[dev-packages]部分にインストールしたライブラリが記載されていると思います。

# pipenv install --dev pyformat autopep8 flake8


6.ライブラリのバージョンのアップデートをしよう!

インストールしたライブラリのバージョンを上げたいときは次のコマンドで実行可能です。

更新のあったライブラリを確認する場合:

# pipenv update --outdated


全てまとめて更新する場合:

# pipenv update


個別に更新する場合:

# pipenv update [ライブラリ名]


7.インストールしたライブラリを確認しよう!

次のコマンドで一覧を確認出来ます。

# pipenv graph


仮想環境へ入る方法

ここまでpipenvのコマンドを使用して、プロジェクトに関連するパッケージのインストールなど行ってきましたが、 その準備した環境を使用するには次のコマンドで仮想環境に入る必要があります。
※コマンドを実行する場所は、Pipfileのあるプロジェクトは直下ディレクトリです。

# pipenv shell   # 仮想環境を立ち上げる
# exit   # 仮想環境から抜ける


(ディレクトリ名-XXXXXXXX)のような文字列が表示されると仮想環境を起動は成功です。

お疲れ様でした。
これでPython開発にpipenvを導入することが出来ました。
本番環境に移行するときもこのpipenvで生成したPipfileなどを使用すれば簡単にライブラリの環境を準備することが出来ます!

まとめ

今回紹介したpipenvのコマンドを復習しましょう。

  1. 初期化:
     pipenv --python バージョン指定

  2. ライブラリをインストール(バージョン指定可能)
     pipenv install ライブラリ名==2.20.0

  3. ライブラリをアンインストール
     pipenv uninstall ライブラリ名

  4. 開発環境様にライブラリをインストール(バージョン指定可能)
     pipenv install --dev ライブラリ名==2.20.0

  5. ライブラリの更新情報を確認
     pipenv update --outdated

  6. ライブラリを個別にバージョンアップ
     pipenv update <ライブラリ名>

  7. ライブラリをまとめてバージョンアップ
     pipenv update

  8. ライブラリ一覧を確認
     pipenv graph

  9. 仮想環境に入る
     pipenv shell

  10. 仮想環境から抜ける
     exit

とてもシンプルで簡単ですね。

以上、ありがとうございました。