技術

【Python仮想環境】Pipenvはシンプルで使いやすいです

Pythonの仮想環境で、一番メジャーなのがPipenvです。というわけで、Pipenvについてまとめてみました。

乱立気味だった仮想環境

Pythonのややこしいところの一つに、仮想環境を用意する方法が乱立しているというのがあります。
いや、ありました。

昔はpyenvとvenvとか乱立していましたが、最近のPythonのプロジェクトではPipenvが主流になりつつあるように感じます。

実際に、最近現場で関わったプロジェクトはPipenvばかりですし、AWSの公式のドキュメントでもPipenvを進める表記とかに出くわすようになりました。

私自身はずっとAnacondaを使っていたので、Anacondaに慣れていますし使いやすく感じます。なので、今でも実装がほぼ自分だけという小さいプロジェクトならAnacondaでやってしまうことが多いです。

ただチーム開発とnarutoみんなが慣れているものに合わす必要がありますし、実際、Pipenvの方がチーム開発では使いやすいと思います。

今からPythonをはじめるという方は、Pipenvだけ使えるようにしておけば十分でしょう。

Pipenvのメリット

Pipenvの良い点は、Dockerを使わないチーム開発に適しているということです。

Dockerを使う場合は、Dockerで開発環境を共有するのであれこれ考える必要はありませんが、Dockerを使用しないで各自ローカルにPython開発環境を用意する場合はPipenvが非常に使いやすいです。

Pipfileというパッケージ管理のファイルを置くだけで環境を共有できます。新規参入の開発者は、pipfileがあるpathで、pipenv installするだけで、必要なPythonのバージョンとパッケージが入った開発環境ができあがります。

Pipenv基本動作

pipenvそのものinstall

pipenv --version

で、インストールされているか確認。されてない場合、pipでinstallします。

pip install pipenv

既存の仮想環境の確認

今いる仮想環境は、以下のコマンドで確認できます。

pipenv --venv

既存の仮想環境の一覧(Anacondaでいう conda env list)を確認するコマンドは、どうやらなさそうです。(たぶん…)

一覧をみるだけなら、デフォルトだと、ホームディレクトリの .local/share/virtualenvs に作成されるので、そこをlsで見るとかでしょうか。

ls -l ~/.local/share/virtualenvs

ただ、この中にあるcnfファイルとかみても、どのプロジェクトの仮想環境とかは、わからないんですよね・・・

ちょっと不便です。

仮想環境の作成(初期化)

仮想環境を作成するときは、以下のコマンドでできます。

pipenv install

(既存プロジェクトをgit cloneなどしてきて)Pipfileがすでにある場合は、Pipfileの内容のものがinstallされて環境ができます。

Pipfileがない場合は、デフォルトのPythonのバージョンで環境が作成されます。バージョンを指定する場合は、以下になります。

pipenv install --python 3.9

新たに環境を作成する場合、(Pipfileがない場合)は、Pipfileが作成されます。

パッケージ追加

pipenv install {パッケージ名}

で、パッケージをインストールできます。pip installl {パッケージ名} と同じ感覚で使えますが、メインの環境に影響ないので、気軽にどんどんインストールできます。

Pipfileがあるパスより深いところは、Pipenvが効いていて、より上位のパスだとPipenvの環境ではありません。そこで、pipenv isntall パッケージ名 とかやると、あらたに仮想環境が作成されるので注意が必要です。(まあ作成されても削除(詳細は後述)すればいいだけですが。)

Activate

pipenv shell

仮想環境のActivateコマンドです。Anacondaでいう、 conda activate です。

Terminal再起動したときに、仮想環境下になっていないときなどに。

仮想環境の削除

仮想環境の削除は、Pipfileがあるパスから以下のコマンドでできます。

pipenv --rm

他にもオプションはあるけど・・・

pipenvに関することは、このぐらい知っておけば十分だと思います。

他にも依存関係を表示したりするオプションがいろいろありますが、必要になれば調べて使うという感じで良いかと思います。

仮想環境のパッケージ確認

pipenv lock -r

でできます。pipでいう、pip freezeですね。pipenvのコマンドを新たに覚えたくない場合は

pipenv run pip freeze

とかでも確認できます。

まとめ

以上、Pipenvについてでした。

Pipenvはシンプルでわかりやすく、使いやすいです。なのでチーム開発にとても適した、仮想環境管理の方法です。

Pipenvは同一のプロジェクト内でPythonのバージョン(インタープリター)をコロコロ切り替えるということはできないのですが、そういったことが必要になるのは稀でしょう。

そういった特殊な事情がない限り、ガンガン使っていきましょう!