いくつかの前提が満たされたため、メインの環境をPython3.4に切りかえることとした。以下、メモ書き程度。
インストール
今までは、homebrewでインストール -> virtualenv作成としていたのだが、今回は自前でビルドすることとした。
python31, python32という感じのマイナーバージョンを指定してインストールするformulaがなくなっており、既存のメイン環境であるPython3.3をアップデートで消してしまうのではないか、という恐れがあったため。(実際にどうかは未確認)
% brew search python3
python3
ソースはgithubからcloneする. https://github.com/python/cpython
% git clone https://github.com/python/cpython
% cd cpython
configureでインストールディレクトリを指定する。デフォルト(/usr/local)のままでも良いが、その場合はmake install
ではなくmake altinstall
として、既存のシンボリックリンクを上書きしないようにする。
(ref.) https://github.com/python/cpython/blob/master/README
% ./configure --prefix=~/python/python34/3.4.0
% make
% make install
% ls ~/python/python34/3.4.0/bin/
2to3 2to3-3.4 easy_install-3.4 idle3 idle3.4 pip3 pip3.4 pydoc3 pydoc3.4 python3 python3-config python3.4 python3.4-config python3.4m python3.4m-config pyvenv pyvenv-3.4
仮想環境の構築
自身の環境ではシステムデフォルトのPython(2.7.5)は変更せずに、各バージョン用の仮想環境を構築している。
仮想環境を作成するにはvirtualenvを使用するのが一般的だが、Python3.4から標準ライブラリのpyvenvを使用するという選択肢ができた。
https://docs.python.org/3.4/using/scripts.html#scripts-pyvenv
軽くしか試していないので断言できないが、virtualenvを置きかえるだけ、ならば問題なさそう。
ただし、virtualenvにはvirtualenvwrapperという素晴しいユーティリティがあるため、ここが何らかの方法で解決されない限りはpyvenvの移行はしないつもり。(自分で実装しろやゴルァ、って指摘はあるけど…)
とはいえ、仮想環境構築が標準ライブラリで出来るようになった意義はデカいと思う。今後に期待。
% mkvirtualenv -p ~/python/python34/3.4.0/bin/python3.4 py3.4.0
…
(py3.4.0)% python
Python 3.4.0+ (default, Apr 19 2014, 14:38:58)
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.2.76)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
このメイン環境は可能な限りクリーンにしておくが、iPythonだけはいれておく。無いとだらっと何かを確かめたい時に不便なので。
virtualevnwrapperは仮想環境作成時のフックをサポートしているため、それを利用する。
仮想環境作成後の動作は、postmkvirtualenvファイルにより定義できるため、ここにipythonをインストールする処理を書く。
# !/bin/zsh
# This hook is run after a new virtualenv is activated.
pip install ipython
(ref.) http://virtualenvwrapper.readthedocs.org/en/latest/scripts.html
あとhttpieも何かと便利なので入れておいた。
(py3.4.0)% pip install httpie
デフォルトでPython3.4の仮想環境を使用する
現状だと、端末を立ち上げる度に以下のコマンドを入力して作成した仮想環境の使用を明示しなければならない。
# workonはvirtualenvwrapperが提供する
% workon py3.4.0
(py3.4.0)%
これは不便なので、ログイン時にworkonするようにしておく。以下はzsh使用前提。
% cat ~/.zlogin
# 仮想環境の名前には規則性を持たせる。(py + (version))
# デフォルトバージョンは別途ファイルで管理
if [ -f ~/.venv/.defaultver ];then
DEFAULT_VER=`cat ~/.venv/.defaultver`
workon py${DEFAULT_VER}
fi
% cat ~/.venv/.defaultver
3.4.0
(ref.) http://qiita.com/yuku_t/items/40bcc63bb8ad94f083f1
- 現状、.zshrcでvirtualenvwrapperの読み込みを行っているため、.zloginにworkon処理を書いているが、読み込みもあわせて.zprofileに書いた方がいいかも。
プロジェクト毎に仮想環境を切る
普段は上記の仮想環境を使用するが、前述の通りメイン環境はクリーンにしておきたいので、ここから更にプロジェクト毎に仮想環境を作成する。
デフォルトでPython3.4.0を使用するよう設定しているため、指定するインタープリタがどこに入っているかを意識することは基本的にない(=`which python`で指定できる)
(py3.4.0)% mkvirtualenv -p `which python` new_project