Pipenvでの基本的な環境構築

こんにちは。ピリカ開発部の冨田です。

ピリカではPythonパッケージの管理にPipenvを利用しています。

今回は、Pipenvで環境構築を行うときに、よく使用するコマンドをまとめました。

公式ドキュメント

前提

  • pyenvpipenvがインストールされていること。

自分が環境構築をするとき

作業ディレクトリのpythonのバージョンを指定する

pyenvを使ってバージョンの切り替えを行います。

$ pyenv versions  # 使用できるインストール済みのPythonのバージョンが表示される

上記コマンドを打って表示されたバージョンの中から選択します。

$ pyenv local 3.9.1  # 現在のディレクトリでバージョンを指定する

これで、コマンドを実行したディレクトリに、.python-versionというファイルが生成され、バージョンが書き込まれています。

3.9.1

pythonのバージョンを指定してpipfileを生成する

最初にpythonのバージョンを指定します。

$ pipenv --python 3.9  # 3.9でpipfileが生成される

これで、直下に次の2つのファイルが生成されます。

  • Pipfile: インストールパッケージの情報がかかれたもの
  • Pipfile.lock: インストールしたパッケージの細かいバージョン、ハッシュ、依存関係がかかれたもの

この2つを、他の人に共有すると、同じ仮想環境を再現することが可能になります。

パッケージをインストールする

基本のインストールコマンド

$ pipenv install google-cloud-tasks

インストールしていくと、上記のPipfilePipfile.lockが更新されていきます。

バージョンを指定してインストールしたい時

$ pipenv install "google-cloud-tasks==1.5.0"

Pipfileを書き換えてインストールしたい時

Pipfileを直接書き換えたのち、下記コマンドを打つことでもインストール可能です。

これであれば複数のパッケージを一度にインストールすることも可能です。

[packages]
google-cloud-tasks = "==1.5.0"
$ pipenv install

開発環境にのみインストールする

$ pipenv install flake8 --dev 

パッケージをアンインストールする

$ pip env uninstall google-cloud-tasks

requirements.txtを生成する

$ pipenv lock -r > requirements.txt

GAEでPythonのパッケージをインストールするには、requirements.txtが必要なため、ピリカではよく使います。

以上で、基本的な仮想環境の定義は完了です。

この後、ピリカでは、基本的に下記のファイルをgitに上げています。

  • .python-version
  • Pipfile
  • Pipfile.lock
  • requirements.txt

他の人が作った仮想環境を再現したい時(既存のPipfileとPipfile.lockから仮想環境を再現したい時)

PipfilePipfile.lockのあるディレクトリで下記コマンドを実行します。

$ pipenv sync

上記コマンドは、Pipfile.lockに従って仮想環境を再現します。

他にも、再現するためのコマンドは、

$ pipenv install  # Pipfileからインストール
$ pipenv update  # Pipfileからインストールし、アップデートがあればアップデートする

がありますがsyncであれば、同じ環境が再現でき、かつ、依存関係の確認がないため動作が早いです。

もし、Pipfileがなく、requirements.txtしかない場合は、下記コマンドでrequirements.txtからpipenvでインストールすることもできます。

$ pipenv install -r requirements.txt

pipenv installした後でやり直したくなった時

$ pipenv --rm  

私は、エラーなどで環境構築に失敗した場合、上記コマンドを打ったのち、PipfilePipfile.lockの差分をStashして、再度パッケージのインストールをやり直します。

PycharmでPipenvを利用するには

ピリカではPycharmを利用しているメンバーも多いです。

環境構築を行うディレクトリでプロジェクトを開き、PreferencePython Interpreterから追加します。

f:id:kahi0223:20220310180143p:plain
PycharmのPythonInterpreterの画面

  • Base Interpreterに使用したいpyenvのpythonをおく
  • Install package from Pipfileにチェックを入れる

これをするだけで、直下にあるPipfileを参照して仮想環境の構築をおこなってくれます。便利!

あとがき

環境構築はたまにやると「どうやるんだっけ…」とよく忘れて毎回Google先生に質問してしまっているので、よく使うコマンドをまとめました。

ピリカの業務であれば、上記コマンドがあれば大抵対応できます!