読者です 読者をやめる 読者になる 読者になる

計算物理屋の研究備忘録

Linux, Cygwin, Mac, zsh, emacs等の使い方、設定などのメモ

pyenvを使ってPython環境を構築

目次

pyenv

pyenvを使うと簡単に複数のバージョンのpython環境を構築でき、使いたいときに切り替えることもできる。好きな場所にインストールできるため、管理者権限も必要ない。pyenvで最新バージョンのpython環境を構築すればpipも自動的についてくるので管理者権限無しでパッケージ管理も楽にできる。システムのデフォルトのpython環境を汚すこともない。

githubのダウンロード先 github.com

インストール

インストール先はどこでもいいが、デフォルトの~/.pyenvにする。インストール先を変える場合は、後で環境変数PYENV_ROOTも変えること。

インストールはgitでcloneするだけ。

$ git clone git://github.com/yyuu/pyenv.git ~/.pyenv

ついでにpyenv-pip-rehashというプラグインもインストールしておく。後述するがめんどうなrehashを自動で行ってくれるようになる。gitでクローンするだけ

git clone https://github.com/yyuu/pyenv-pip-rehash.git ~/.pyenv/plugins/pyenv-pip-rehash

設定

.zshrcに書いておく

#----- pyenv
export PYENV_ROOT="${HOME}/.pyenv"
if [ -d "${PYENV_ROOT}" ]; then
   export PATH=${PYENV_ROOT}/bin:$PATH
   eval "$(pyenv init -)"
fi

使い方

コマンド一覧

pyenvと打ったら出てくる

commands List all available pyenv commands
local Set or show the local application-specific Python version
global Set or show the global Python version
shell Set or show the shell-specific Python version
install Install a Python version using python-build
uninstall Uninstall a specific Python version
rehash Rehash pyenv shims (run this after installing executables)
version Show the current Python version and its origin
versions List all Python versions available to pyenv
which Display the full path to an executable
whence List all Python versions that contain the given executable

実際にpython2とpython3をインストールしてみる

$ pyenv install -l

-lを使うことでインストール可能なバージョン一覧が出てくるので、現時点(2015/3/21)で最新の2.7.93.4.3をインストールしてみる。

$ pyenv install 2.7.9
$ pyenv install 3.4.3

linuxだとすんなりインストールできたが、Cygwinだとgccか何かのエラーで失敗したのでsetup.exeからgccを含め関連最新版にアップデートしてやり直した。すると次はこんなエラーが出て失敗した

Last 10 log lines:
    self.build_extension(ext)
  File "./setup.py", line 287, in build_extension
    if not self.configure_ctypes(ext):
  File "./setup.py", line 2041, in configure_ctypes
    exec f in fficonfig
  File "build/temp.cygwin-1.7.35-x86_64-2.7/libffi/fficonfig.py", line 33, in <module>
    ffi_sources += ffi_platforms['X86_WIN64']
KeyError: 'X86_WIN64'
Makefile:488: ターゲット 'sharedmods' のレシピで失敗しました
make: *** [sharedmods] エラー 1

fficonfig.pyffi_platformsX86_WIN64が無いのが原因?64bitバージョンのCygwinでは無理みたい。

バージョンを切り替える

インストールされているバージョンと現在使っているバージョンの確認

$ pyenv versions
  system
* 2.7.9 (set by /home/xxxxxxxx/.pyenv/version)
  3.4.3

バージョン切り替え

$ pyenv global 3.4.3

各バージョンごとに独立した環境を構築できる。新しいバージョンにはpipがデフォルトで付いてくるので、pipでパッケージを追加していけばよい

pipなどでshimsを更新するごとにpyenv rehashしなければいけないが、前述したpyenv-pip-rehashというプラグインを入れておけばこの作業はやらなくてよい