Weekly Report

途中で寝てももいいよね,ゆとりだもんね

pyenvのインストールと簡単な使い方

Pythonはもっぱら3をいじっていてる.

自分で小さなツールを作るときには特にバージョンを気にしない.しかしPyPIで公開されている2系のモジュールを,調査として適当にインタプリタを立ち上げて動作を見ようとすると,バージョンの切り替えが面倒である.

ということで最近よく聞くpyenvについて調べてみた.

pyenv

まずはpyenvのREADMEを読んでまとめると.

  • 複数バージョンのPythonを~/.pyenv以下に配置
    • これを切り替えて手軽にバージョンを変更
  • shell scriptだけで作られている (Pythonに依存しない)

とりあえずインストールしてみる.

インストール環境

インストール

OS XならHomebrewが簡単 その他の環境でも,pyenvのREADMEを見れば大丈夫だろう.

$ brew install pyenv-virtualenv
$ echo '"eval $(pyenv init -)"' >> ~/.zshrc # bashなら ~/.bashrc
$ source ~/.zshrc

pyenvのコマンド

基本的にはpyenv helpCOMMAND Referenceを参考に 必要そうなものだけ紹介.

pyenv versionpyenv versions

現在のバージョンと,利用可能なバージョンをそれぞれ表示する.初期はsystemだけ表示されるはず.

$ pyenv version
system (set by /Users/hoge/.pyenv/version)
$ pyenv versions
* system (set by /Users/hoge/.pyenv/version)

pyenv install

バージョンを指定して~/.pyenv以下にインストール.-l, --listで利用可能なバージョンを表示できる.

$ pyenv install 2.7.8
$ pyenv install 3.4.1
$ pyenv versions
* system (set by /Users/hoge/.pyenv/version)
  2.7.8
  3.4.1

pyenv global

Pythonインタプリタのデフォルトを変更.

  • ~/.pyenv/versionを書き換えているようだ
$ pyenv global 3.4.1
$ pyenv version
3.4.1 (set by /Users/hoge/.pyenv/version)
$ python -V
Python 3.4.1
$ pip -V
pip 1.5.6 from /Users/hoge/.pyenv/versions/3.4.1/lib/python3.4/site-packages (python 3.4)

pyenv local

  • 引数にバージョンを指定
    • カレントディレクトリに.python-versionを作成し,そのバージョンに設定.
      • これはglobalの設定より優先される
  • 引数を指定しない場合
    • カレントディレクトリの.python-versionで指定されたバージョンに設定.
$ pyenv global 3.4.1
$ mkdir /tmp/app && cd /tmp/app
$ pyenv local 2.7.8
$ pyenv version
2.7.8 (set by /tmp/app/.python-version)
$ cat .python-version
2.7.8
$ pyenv local --unset # .python-versionが削除される

pyenv shell

globalやlocalよりも優先させてバージョンを設定する. これは環境にPYENV_VERSION=バージョンと設定しているようだ.

$ pyenv shell 3.4.1
$ cd /tmp/app && pyenv version # localの設定がのままとする
3.4.1 (set by PYENV_VERSION environment variable)
$ pyenv shell --unset # PYENV_VERSIONが削除される
$ pyenv version
2.7.8 (set by /tmp/app/.python-version)

これ以外にもいくつかあるので,COMMAND Referenceを参照してほしい.

virtualenvは眠いのでまた今度.

編集履歴

  • 2015/05/28 typoを直す
  • 2015/07/12 表現をいろいろと直す