macでpythonのバージョンを切り替えて使う (pyenv + venv)
macでpythonのバージョンを切り替えて使いたい + プロジェクトごとに環境を管理したい
pyenv ・pythonのバージョンを管理できる ・プロジェクトごとにpythonのバージョンを切り替えることができる ・同一バージョンのpythonでプロジェクトごとに環境を切り替えることはできない
venv ・pythonのバージョンは切り替えられない ・プロジェクトごとに環境を切り替えることができる
ということでpyenv+venvでpythonのバージョンとプロジェクトごとの環境を切り替えたい
pyenvのインストール
brew install pyenv
pyenv initをbash_profileに書き込み
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile source ~/.bash_profile
pyenvでinstall可能なバージョン確認
pyenv install -l
pythonのinstall 最初失敗して下の方に成功したコマンドを書いてあるので注意
pyenv install x.x.x
次のエラーが出た
zipimport.ZipImportError: can't decompress data; zlib not available make: *** [install] Error 1
zlibをinstallしようとすると
brew install zlib
以下のように言われた
For compilers to find zlib you may need to set: export LDFLAGS="-L/usr/local/opt/zlib/lib" export CPPFLAGS="-I/usr/local/opt/zlib/include" For pkg-config to find zlib you may need to set: export PKG_CONFIG_PATH="/usr/local/opt/zlib/lib/pkgconfig"
そこで
export LDFLAGS="-L/usr/local/opt/zlib/lib" export CPPFLAGS="-I/usr/local/opt/zlib/include" export PKG_CONFIG_PATH="/usr/local/opt/zlib/lib/pkgconfig"
やってみて 再び
pyenv install x.x.x
今度は成功したがWarningが出た
WARNING: The Python sqlite3 extension was not compiled. Missing the SQLite3 lib? Installed Python-3.7.0 to /Users/{user name}.pyenv/versions/3.7.0
installは成功していると思ったが、この後問題が起こったので一旦削除してやり直し
rm -rf ~/.pyenv/versions/3.7.0
色々調べた結果
CFLAGS="-I$(xcrun --show-sdk-path)/usr/include" pyenv install -v x.y.z
これでよかった
$ pyenv versions * system (set by /Users/{user name}/.pyenv/version) x.x.x
プロジェクトディレクトリに移動して
pyenv local x.x.x
こうすることでプロジェクトディレクトリに来るとversionが切り替わるようになる
次にvenvで環境を構築する こちら mlwbio.hatenablog.com
を参照