LoginSignup
8
17

More than 5 years have passed since last update.

anyenvによるPython環境構築

Last updated at Posted at 2017-10-21

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
8
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
17