Pythonで開発するときの鉄板ツール Pyenv を紹介します。
背景
ほとんどのOSにPythonはプリインストールされています。
Pyenvは標準でインストールされているPythonとは別の独立した実行ランタイムを作成・管理します。以下のような理由で利用されます。
- 異なるPythonバージョンを使いたい
- 開発プロジェクト毎にPython実行環境を分けたい
- ライブラリのアップグレードテストをしたい
- システム標準のPython環境を汚染したくない
Pyenv, pyenv-virtualenv をインストール
早速インストールします。
Macであればbrew installでも問題ありません。
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
$ git clone https://github.com/pyenv/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
PATHを通します。
$HOME/.bash_profile に以下を追記してターミナルを開き直します。
export PYENV_ROOT=$HOME/.pyenv
export PATH=$PYENV_ROOT/bin:$PATH
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
これだけです!
最新のPythonをインストールする
インストール可能な過去のPythonバージョンから最新まで調べることができます。本記事執筆時点で 3.9.1 が最新バージョンです。
$ pyenv install --list | grep 3.9
3.9.0
3.9-dev
3.9.1
miniconda-3.9.1
miniconda3-3.9.1
データ分析屋さんが大好きなanacondaも用意されてます。
$ pyenv install --list | grep anaconda | tail
anaconda3-5.1.0
anaconda3-5.2.0
anaconda3-5.3.0
anaconda3-5.3.1
anaconda3-2018.12
anaconda3-2019.03
anaconda3-2019.07
anaconda3-2019.10
anaconda3-2020.02
anaconda3-2020.07
今回は普通のPython3.9.1をインストールします。
ソースからコンパイルされるので少々時間がかかります。
$ pyenv install 3.9.1
私の環境には3.8.3のenvが入っていました。今回新しく3.9.1がインストールされたことが確認できます。
$ pyenv versions
* system (set by /Users/namacha/.pyenv/version)
3.8.3
3.8.3/envs/anotherpython
3.8.3/envs/django-app
3.8.3/envs/gatsby
3.8.3/envs/neovim
3.8.3/envs/numpy
3.8.3/envs/testpython
3.9.1 ← インストールされた!
Pyenv利用の一覧の流れ
ざっと一連の流れを。
# namachaという名前でPython3.9.1のエイリアスを作成する
$ pyenv virtualenv 3.9.1 namacha
# namacha に切り替える
$ pyenv activate namacha
# Pythonのバージョンが3.9.1になる
(namacha) $ python -V
Python 3.9.1
# ライブラリをインストールする
(namacha) $ pip install django
# ライブラリがインストールされたことを確認
(namacha) $ pip freeze
asgiref==3.3.1
Django==3.1.4
pytz==2020.4
sqlparse==0.4.1
# 別のPython3.9.1の実行環境をmugichaという名前で作成する
(namacha) $ pyenv virtualenv 3.9.1 mugicha
# mugichaの実行環境に切り替える
(namacha) $ pyenv activate mugicha
# mugichaはnamachaとは独立した環境なのでライブラリはインストールされていない
(mugicha) $ pip freeze
# mugicha からシステム標準のPythonに戻す
(mugicha) $ pyenv deactivate
# システムのPythonに戻った
$ python -V
Python 2.7.16
pyenv-virtualenvの機能を使ってPyenvでインストールしたPython3.9.1を複製し、namacha とmugicha のそれぞれ独立した実行環境を作成しました。namachaにはWeb開発フレームワークのDjangoをインストールしました。mugicha は namacha とは関係のないPython3.9.1のエイリアスとして扱われるので、Djangoはインストールされていません。
現在自分がどの実行環境を使っているかは、bashのコマンドラインの先頭に (namacha)
とエイリアスの名前で識別可能です。
よく使うコマンドのおさらい
以下のコマンドを覚えておけば実利用の際は十分です。
コマンド | 用途 |
---|---|
pyenv install | 新しいPythonバージョンのインストール |
pyenv virtualenv | PyenvでインストールしたPythonのエイリアスを作成 |
pyenv activate | Python実行環境切り替え |
pyenv deactivate | Pyenvの実行環境から抜け出す |
pyenv versions | Pyenvで管理している実行環境の一覧 |
実際の運用では
Web開発の本番環境では使いにくいです。PyenvはPythonをソースコードからgccビルドします。サーバの運用ポリシー的にgccを入れるのはNGという現場も多いかと。実運用では、Python自体は yum install しておいて、ランタイムの複製は Python3 標準機能としてバンドルされている venv を利用します。Pyenvはローカルの端末で開発環境として利用するのが主用途 と考えておくと良いでしょう。
それでは、良きPythonライフを!