プログラミング初心者がアーキテクトっぽく語る

見苦しい記事も多数あるとは思いますが訂正しつつブログと共に成長していければと思います

pipenvによるPython仮想環境管理

引き続きPythonの実行環境構築についてまとめてみる。

ここまでPythonのバージョン管理、ライブラリ管理の必要性とそれらを実現するpyenv、そしてvirtualenvをみてきた。

architecting.hateblo.jp

architecting.hateblo.jp

Pythonの仮想環境構築といえばpyenv + virutalenvだった。

  1. pyenvでPythonバージョン管理
  2. virtualenvでライブラリ管理
  3. requirements.txtで仮想環境を再現

ここまで真面目に読んできた方がいらっしゃれば誠に気の毒だがこの管理方式は過去のものとなりつつある。よい側面を見ればあなたはもうPython環境を管理するのにツールを複数使わなくてもよいのだ。pipenv 1つで済む。

pipenvはPython公式が正式に推奨しており世の中の流れはpipenvに切り替わっている。これからPython環境を構築する人は特別な理由がない限りpipenvを使うべきだ。


インストール

  • pipでインストール
pip install pipenv
  • プロジェクトごとに仮想環境を作成できるように環境変数を設定
$ vi .bash_profile
export PIPENV_VENV_IN_PROJECT=true

使い方

cd <ディクレクトリ>
  • 特定のPythonバージョンで初期化
    • Python 3.8がインストールされていないときは自動的にインストールする
$ pipenv --python 3.8
  • パッケージのインストール
    • PipfileとPipfile.lockにパッケージ情報が記録される
$ pipenv install numpy
  • パッケージのインストール - 開発者用
$ pipenv install --dev autopep8 flake8
  • パッケージの更新
$ pipenv update
  • パッケージの確認
$ pipenv graph
  • 環境を再現 - Pipfileから
$ pipenv install
  • 環境を再現 - PipfileとPipfile.lockから
$ pipenv sync
$ pipenv run XXX
  • 仮想環境へ入る
$ pipenv shell
  • 仮想環境から出る
$ exit
  • 仮想環境を削除
pipenv --rm

トラブルシュート

環境変数PIPENV_VENV_IN_PROJECTをtrueにしないと仮想環境のパスが~/.virtualenvsや~/.venvなどに作成される。プロジェクトごとに切り替えることができない。