出典:pipenv.org
その他の方法による環境構築を否定するものではありません。
Pythonのパッケージのバージョン依存をVirtualenvで管理していましたが、以前のバージョンのPythonが必要になりました。PythonはHomebrewで入れたやつで、それは最新1つになるので、複数バージョンのPythonのインストール・切り替えにpyenvを導入しようと思いました。
それだったら、いっそのことパッケージ管理も公式推奨のPipenvにしてしまおうと思い導入してみました。
pyenvのインストール
Homebrewで入れます。
$ brew install pyenv
次の工程が必要です。
$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
.bash_profileに3行追加されます。手で書いてもいいですが、PATH
をいじるので最後の方に置いてください。PYENV_ROOT
やPATH
の設定は必要ありません。pyenv init -
が自動でやってくれます。
ターミナルを再起動します。$ exec "$SHELL"
だと私の環境ではダメでした。
Pipenvのインストール
Homebrewで入れます。
$ brew install pipenv
Pipenvの使い方
プロジェクトフォルダに入ります。
$ mkdir project-hoge
$ cd project-hoge/
インストールされていないバージョンのPythonが必要ならpyenvと連携して取ってきてくれます。
$ pipenv --python 3.6
Warning: Python 3.6 was not found on your system…
Would you like us to install CPython 3.6.9 with pyenv? [Y/n]: y
Installing CPython 3.6.9 with pyenv (this may take a few minutes)…
:
:
取ってきたPythonは(デフォルトでは)~/.pyenv
にインストールされます。
pipと同じ感覚でパッケージをインストールできます。
$ pipenv install package-hoge
プロジェクトフォルダにはPipfile
とPipfile.lock
のみ生成されます。
仮想環境をアクティベートするには以下。
$ pipenv shell
仮想環境の実体は~/.local/share/virtualenvs
にあります。環境変数PIPENV_VENV_IN_PROJECT=true
を設定すればプロジェクトフォルダ内に作成することもできます。Virtualenvでは仮想環境のインストール先とプロジェクトは別々に管理されると思いますが、Pipenvではプロジェクトフォルダに入ってpipenv shell
すれば関連する仮想環境が自動でアクティベートされます。
仮想環境になってます。
(project-hoge) $ python -V
Python 3.6.9
終わったらexit
(またはcontrol + D)。
仮想環境を削除したくなったら以下のコマンド。
$ pipenv --rm
pyenvでインストールしたPythonを削除するにはpyenv uninstall
。
$ pyenv versions
* system (set by /Users/****/.pyenv/version)
3.6.9
$ pyenv uninstall 3.6.9
pyenv: remove /Users/****/.pyenv/versions/3.6.9? y
$ pyenv versions
* system (set by /Users/****/.pyenv/version)