47

virtualenv プロジェクトでノーズ (nosetests) を使用できません。virtualenv 環境にインストールされているパッケージが見つからないようです。

奇妙なことは、私が設定できることです

test_suite = 'nose.collector'

setup.py で、次のようにテストを問題なく実行します

python setup.py test

しかし、nosetests をそのまま実行すると、あらゆる種類のインポート エラーが発生します。

システム全体にインストールされたnoseとvirtualenvのnoseパッケージの両方で試しましたが、うまくいきませんでした。

何かご意見は?

ありがとう!!

4

9 に答える 9

63

仮想環境にnoseのコピーをインストールする必要があります。noseをvirtualenvに強制的にインストールするには、グローバルサイトパッケージにすでにインストールされている場合でも、次のフラグを付けて実行pip installします。-I

(env1)$ pip install nose -I

nosetestsそれ以降は、通常どおり実行できます。

于 2011-05-07T02:35:46.013 に答える
45

あなたは走ることができますmyenv/bin/python /usr/bin/nosetestsか?仮想環境のライブラリ セットを使用して Nose を実行する必要があります。

于 2009-05-14T18:32:54.263 に答える
11

virtualenv同じ状況で、パスを正しく更新するには、をリロードする必要がありました。

deactivate
env/bin/activate
于 2013-09-17T21:54:09.570 に答える
9

同様の問題が発生しました。次の回避策が役立ちました。

python `which nosetests` 

(だけでなくnosestests

于 2011-03-23T18:35:21.053 に答える
8

これが私にとってうまくいくものです:

$ 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"

上記と同じ属性slitherを持つ、本当に基本的なパッケージを作成しました。次に、パッケージ ソースを の下に置きました。setup.pytest_suiteenv1/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、実行可能ファイルについてはうるさい場合があることに注意してください。--exe実行可能な python モジュール内のテストを検出する場合は、合格できます。

于 2009-05-14T20:59:22.493 に答える
0

virtualenv にインストールされているものよりも高い優先度で、nosetests別の場所にインストールされている可能性があります。現在の virtualenv にインストールされているモジュールと関連するスクリプトを最優先PATHにする簡単な方法は、以下を編集することです。nosenosetestsPATH

export PATH=/path/to/current/virtualenv/bin:$PATH
于 2013-06-06T17:18:33.527 に答える
0

おそらくこれは最近の変更ですが、私にとっては、pip を使用してノーズテストをインストールしたときに、nosetests 実行可能ファイルが にインストールされていました.virtualenvs/<env>/bin。これは (当然のことながら) virtualenv で正しく動作します。

于 2011-09-07T01:55:32.053 に答える