anyenvによるPython環境構築
以前書いた、Python開発環境構築 の内容を anyenvを使って内容更新します。
動作確認のため、クリーンインストールしたmacOS High SierraにPython環境を構築しようと思ったら一部ハマったので、その原因と解決方法も記載しました。
目的
Mac上に以下の条件を満たすPython環境を構築します
- 複数バージョンのPythonを切り替えられること
- プロジェクトごとにパッケージを分離できること
- Python 以外でも**envが使用できるように準備しておく
環境
- macOS High Sierra (10.13) クリーンインストール
- zsh
- Homebrew(1.3.6) インストール済み
※ bash を使っている人は .zshrc を .bashrc と置き換えて読んで下さい
ツール説明
-
pyenv
複数バージョンのPythonを簡単に切り替えられるようにするツール。rbenvとruby-buildからフォークしてPython用に変更されました。 -
virtualenv
分離されたPython環境を作成るためのツール。環境ごとに違うパッケージを入れることができます。 -
anyenv
** env(rbenv, pyenvなど)のラッパー。
anyenvを入れておけば、**envごとにシェルプロファイルを変更したりする必要がなくなります。
インストール
anyenvインストール
$ git clone https://github.com/riywo/anyenv ~/.anyenv
$ echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.zshrc
$ echo 'eval "$(anyenv init -)"' >> ~/.zshrc
$ exec $SHELL -l
anyenv-updateプラグインインストール
$ mkdir -p $(anyenv root)/plugins
$ git clone https://github.com/znz/anyenv-update.git $(anyenv root)/plugins/anyenv-update
pyenvインストール
$ anyenv install pyenv
$ exec $SHELL -l
Pythonインストール
インストールに必要なソフトのインストール
$ brew install readline xz
インストール可能なバージョン一覧を表示
$ pyenv install -l
指定したバージョンのPythonをインストール
$ pyenv install -v 2.7.14
ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?
https://github.com/pyenv/pyenv/wiki/Common-build-problems
エラーが出たので、URLのページにかかれているオプションを追加して再度インストールしてみます。
$ CFLAGS="-I$(brew --prefix openssl)/include" \
LDFLAGS="-L$(brew --prefix openssl)/lib" \
pyenv install -v 2.7.14
ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?
https://github.com/pyenv/pyenv/wiki/Common-build-problems
同じエラーが表示されます。
念のためCFLAGS、LDFLAGSのパスを確認してみると、ファイルがありません。
$ ls $(brew --prefix openssl)
lib
opensslを再インストールします。
$ brew uninstall openssl
$ brew install openssl
$ ls $(brew --prefix openssl)
CHANGES NEWS include
INSTALL_RECEIPT.json README lib
LICENSE bin share
今度は必要なファイルがインストールされました。
この状態で先程のコマンドを実行すると無事にインストールが完了します。
$ CFLAGS="-I$(brew --prefix openssl)/include" \
LDFLAGS="-L$(brew --prefix openssl)/lib" \
pyenv install -v 2.7.14
Installed Python-2.7.14 to /Users/kazuya/.anyenv/envs/pyenv/versions/2.7.14
インストールされているバージョンを表示
$ pyenv versions
* system (set by /Users/kazuya/.anyenv/envs/pyenv/version)
2.7.14
pyenv-virtualenvインストール
$ git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.zshrc
$ exec "$SHELL"
これで必要なソフトはインストール完了です。
仮想環境の使い方
仮想環境の作成
python 2.7.14 の仮想環境、myenv2_7_14を作成する場合
$ pyenv virtualenv 2.7.14 myenv2_7_14
pyenvのversionに登録されることが確認できます
$ pyenv versions
* system (set by /Users/kazuya/.anyenv/envs/pyenv/version)
2.7.14
2.7.14/envs/myenv2_7_14
3.6.3
myenv2_7_14
フォルダに仮想環境をセット
project-aフォルダにmyenv2_7_14の環境をセットする場合
$ mkdir project-a
$ cd project-a
$ pyenv local myenv2_7_14
project-aフォルダに移動すると、自動的にmyenv2_7_14の環境となる
$ cd project-a
(myenv2_7_14)$ python --version
Python 2.7.14
(myenv2_7_14)$ cd ..
$ python --version
Python 2.7.10
仮想環境の削除
myenv2_7_14を削除する場合
$ pyenv uninstall myenv2_7_14
pyenv-virtualenv: remove /Users/kazuya/.anyenv/envs/pyenv/versions/2.7.14/envs/myenv2_7_14? yes