Virtualenvプロジェクトでnose(nosetests)を使用できません-virtualenv環境にインストールされているパッケージが見つからないようです。
奇妙なことに、私は設定することができます
test_suite = 'nose.collector'
setup.pyで、次のようにテストを実行します。
python setup.py test
しかし、nosetestsを直接実行すると、あらゆる種類のインポートエラーが発生します。
システム全体にnoseとvirtualenvnoseパッケージをインストールしてみましたが、うまくいきませんでした。
何かご意見は?
ありがとう!
myenv/bin/python /usr/bin/nosetests
を実行できますか?仮想環境のライブラリセットを使用してNoseを実行する必要があります。
仮想環境にnoseのコピーをインストールする必要があります。 noseをvirtualenvに強制的にインストールするには、グローバルサイトパッケージにすでにインストールされている場合でも、pip install
フラグを指定して-I
を実行します。
(env1)$ pip install nose -I
それ以降は、通常どおりnosetests
を実行できます。
同じ状況で、パスを正しく更新するためにvirtualenv
をリロードする必要がありました。
deactivate
env/bin/activate
同様の問題が発生しました。次の回避策が役立ちました。
python `which nosetests`
(nosestests
だけでなく)
これが私のために働くものです:
$ virtualenv --no-site-packages env1
$ cd env1
$ source bin/activate # makes "env1" environment active,
# you will notice that the command Prompt
# now has the environment name in it.
(env1)$ easy_install nose # install nose package into "env1"
setup.py
に上記と同じtest_suite
属性を持つ本当に基本的なパッケージslither
を作成しました。次に、パッケージソースをenv1/src
の下に配置しました。
env1/src
の内部を見ると、次のように表示されます。
slither/setup.py
slither/slither/__init__.py
slither/slither/impl.py # has some very silly code to be tested
slither/slither/tests.py # has test-cases
test
サブコマンドを使用してテストを実行できます。
(env1)$ pushd src/slither
(env1)$ python setup.py test
# ... output elided ...
test_ctor (slither.tests.SnakeTests) ... ok
test_division_by_zero (slither.tests.SnakeTests) ... ok
Ran 2 tests in 0.009s
OK
(env1)$ popd
または、nosetests
で同じテストを実行できます。
(env1)$ pushd src
(env1)$ nosetests slither/
..
Ran 2 tests in 0.007s
OK
(env1)$ popd
また、nosetests
は実行可能ファイルについて慎重になる可能性があることに注意してください。実行可能なpythonモジュールでテストを検出する場合は、--exe
に合格できます。
他のすべてが失敗した場合は、venvにnoseをインストールするか、nosetests-2.7
を実行してみてください。あなたのvenv pythonが2.7の場合、@ andrea-zoncaの答えは同じ効果があると思います
nosetests
のどこかにインストールされているPATH
が、virtualenvにインストールされているものよりも高い優先度でインストールされている可能性があります。現在のvirtualenvにインストールされているnose
モジュールと関連するnosetests
スクリプトを最優先する簡単な方法は、PATH
を編集することです。
export PATH=/path/to/current/virtualenv/bin:$PATH
これは最近の変更かもしれませんが、私にとって、pipを介してnosetestsをインストールしたとき、.virtualenvs/<env>/bin
にインストールされたnosetests実行可能ファイルがありました。これは(当然のことながら)virtualenvで正しく動作します。