Macでpyenvが使えるようにする
MacでPythonの開発環境を整備するのに、pyenv と virtualenvを使うと便利です。
他にも環境構築方法があるのですが、pyenvとvirtualenvを使うのが一番心地よいと思いました。
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
のライブラリは存在しています。
コメント