pyenv + virtualenv でPython開発環境の整備をする

Macでpyenvが使えるようにする

MacでPythonの開発環境を整備するのに、pyenv と virtualenvを使うと便利です。

他にも環境構築方法があるのですが、pyenvとvirtualenvを使うのが一番心地よいと思いました。

Macで初めてgitを利用する場合、command line tools のインストールが必要です。最近のMacOSではインストールしますかと促されるので、OKすれば自動的にインストールしてくれます。
git clone https://github.com/pyenv/pyenv.git ~/.pyenv

.zprofileにpyenvの起動設定

Macのデフォルトシェルがbashからzshに変更されているので、.zprofileというファイルにpyenvの起動シェルスクリプトを書き込みます。

vim ~/.zprofile

zshはbashのほぼ上位互換シェルなので、bashを使っていた人は特に気にすることはありません。

.bash_profile ⇨ .zprofile (ログイン時/SSHログイン時に実行される)

.bashrc ⇨ .zshrc (新しいターミナルセッションごとに実行される)

という対応関係で覚えておけばOKです。

ターミナルを立ち上げると.zprofileが自動的に読み込まれて、pyenvの設定起動を行います。

export PYENV_ROOT=$HOME/.pyenv
export PATH=$PYENV_ROOT/bin:$PATH
eval "$(pyenv init -)"

を.zprofileに書き込みます。

これで一度ターミナルを立ち上げ直すとpyenvというコマンドが使えるようになっています。

pyenv で最新バージョンのpythonをインストールする

Mac OS 10.15.3のpythonのバージョンは2.7.16とかなり古いバージョンです。

最新のpythonを使いたいので、早速pyenvで最新のpythonを使えるようにします。

pyenv install -l

-l (エル)オプションでインストールできるpythonのバージョン一覧をみることができます。

....省略
3.7.5
3.7.5rc1
3.7.6
3.8.0
3.8-dev
3.8.1
3.9-dev
....省略

dev は開発版なので避けて、最新の3.8.1版をインストールしてみます。

pyenv install 3.8.1

これでpythonバージョン3.8.1をインストールすることができます。

pythonをダウンロードしてインストールするので多少時間がかかります。

インストールが終了したら早速試してみます。

pyenv shell 3.8.1

とすることでpythonのバージョンを切り替えることができます。

うまくいかない場合はターミナルを一回閉じて立ち上げ直して、再度コマンドを実行してみてください。

これで好きなバージョンのpythonを入れて簡単に切り替えることのできる環境を構築することができました。

デフォルトで使用するpythonのバージョンを指定する

今後使用するpythonのバージョンを3.8.1にしたい場合は次のようにする。

pyenv global 3.8.1

こうするとどのフォルダでもpythonのバージョンは3.8.1になります。

特定のフォルダのみでpythonのバージョンを指定する

特定のフォルダで作業していて、pythonのバージョンを指定したい場合は次のようにする

pyenv local 3.8.1

これで、そのフォルダ以下でのみpythonのバージョンが3.8.1に指定されます。

一時的に使う場合はshell、フォルダごとに設定したい場合はlocal、全体のデフォルトの環境を変えたい場合はglobalです。

virtualenv を使ってpython実行環境を自由自在に切替えることができるようにする

Pythonで開発する場合、様々なライブラリを利用します。

また、プロジェクトごとに使用するライブラリは異なってきます。

そういったライブラリを管理・利用する場合にpipというPython付属のライブラリ管理ツールを使って、ライブラリ間の依存関係を解決して利用することができます。

ほとんど問題は生じることはないのですが、たまに、ライブラリ間のバージョン問題などで動かないというトラブルが起きる場合があります。

そういったことが起きても、何が問題なのか簡単に切り分けることができると便利です。

というわけで、Pythonのバージョン + インストールしているライブラリの環境を簡単に切り替えることができるようにします。

そのためにvirtualenvというツールをpyenvと組み合わせて使用します。

実際にpythonのバージョンと使用ライブラリ群をまとめた環境を構築してみる

Mac用のパッケージマネージャーHomebrewでpyenv-virtualenvをインストールする。

一応Homebrewのインストール方法から(すでにbrewを使用している人はこの作業は必要ありません)

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

これでbrewコマンドを使うことができるようになります。

 

brew install pyenv-virtualenv

これでpyenv-virtualenvを使用できるようになります。

いよいよPython開発環境を作成する

mypyenv3.8.1という環境を作ります。

pyenv virtualenv 3.8.1 mypyenv3.8.1

これで作成完了です。簡単!

pyenv versions

でこれまでに作成された開発環境を調べることができます。

表示されるリストの中にmypyenv3.8.1があればOKです。

実際に適当なフォルダを作ってそのフォルダ内をmypyenv3.8.1環境にしてみます。

pyenv localで指定できます。

pyenv local mypyenv3.8.1

上手くいくと、ターミナルの一番前に(mypyenv3.8.1)のような表示がされるようになります。

これでpipで色々なライブラリをインストールしてもシステムや他の環境が汚染されることはなくなります。好きなライブラリをインストールしましょう!

作成したpyenv環境を消すには?

いらなくなったpyenv環境を消すにはpyenv uninstallを使います。

例えば、mypyenv3.8.1を消去してみます。

pyenv uninstall mypyenv3.8.1
pyenv-virtualenv: remove /Users/username/.pyenv/versions/3.8.1/envs/mypyenv3.8.1?

/Users/username/.pyenv/versions/3.8.1/envs/mypyenv3.8.1 フォルダを本当に消しますか?

と聞かれるのでyesとすると環境を消去できます。

pyenvで作成した環境は上記のパスのmypyenv3.8.1フォルダに格納されています。

そうする事で、別々にpython環境を保存しているわけです。

pyenvを使っている時のpythonライブラリの実体はどこにある?

pyenv local mypyenv3.8.1でpyenv環境に入って、
pip freezeとしてpythonライブラリを確認してみます。私の環境ではnumpyが入っていたので、numpyの実体がどこにあるか確認してみます。
pip show numpyでライブラリのパスを確認する事ができます。

(mypyenv3.8.1)  % pip show numpy
Name: numpy
Version: 1.18.2
Summary: NumPy is the fundamental package for array computing with Python.
Home-page: https://www.numpy.org
Author: Travis E. Oliphant et al.
Author-email: None
License: BSD
Location: /Users/username/.pyenv/versions/3.8.1/envs/mypyenv3.8.1/lib/python3.8/site-packages
Requires:
Required-by: TA-Lib, pandas, bokeh, Backtesting

ホームフォルダに.pyenvというフォルダがその中にmypyenv3.8.1という環境用のフォルダが存在し、その下層の方にsite-packagesが存在しその中にnumpyのライブラリは存在しています。

コメント