log

nose を複数バージョンの Python で使う

nose とは Python 用のテストフレームワークです。Python には他にも unittest や doctest などがありますが、使いやすいという理由でこれを使ってます。

python_select で Python のバージョンを切り替えながら nose を使っていると、どうやら python_select による変更が反映されてないのではないか?ということに気づきました。

easy_install によってインストールされた nosetests は /usr/local/bin 以下に設置されていたので、中身を見てみます。

#!/usr/bin/python
# EASY-INSTALL-ENTRY-SCRIPT: 'nose==0.11.4','console_scripts','nosetests'
__requires__ = 'nose==0.11.4'
import sys
from pkg_resources import load_entry_point
 
sys.exit(
    load_entry_point('nose==0.11.4', 'console_scripts', 'nosetests')()
)                                                                                                                    

一行目を見る限り、どうやらデフォルトでインストールされている Python を利用しているようです。

そこで、以下のように修正しました。

#!/usr/bin/env python
# EASY-INSTALL-ENTRY-SCRIPT: 'nose==0.11.4','console_scripts','nosetests'
__requires__ = 'nose==0.11.4'
import sys
from pkg_resources import load_entry_point
 
sys.exit(
    load_entry_point('nose==0.11.4', 'console_scripts', 'nosetests')()
)                                                                                                                    

これで、python_select による変更が反映されるようになりました。
ただし、nose を新しいバージョンにアップデートするたびに修正が必要になるのが面倒ですね。

nose や unittest などのテストフレームワークについては

に詳しく載ってます。今読んでますが難しい……。