virtualenvの中に鼻を使用して問題
-
21-08-2019 - |
質問
私はvirtualenvのプロジェクトに鼻(nosetests)を使用することができません - virtualenvの環境にインストールパッケージを見つけるように見えることはできません。
。奇妙なことは、私が設定することができるということです。
test_suite = 'nose.collector'
setup.py中と
としてちゃんとテストを実行python setup.py test
が、ストレートnosetestsを実行するときに、インポートエラーのすべての種類があります。
私は鼻のシステム全体のインストールとvirtualenvの鼻パッケージと運の両方でそれを試してみた。
任意の考え?
感謝!!
解決
あなたはmyenv/bin/python /usr/bin/nosetests
を実行することができますか?これは、仮想環境のライブラリのセットを使用して鼻を実行する必要があります。
他のヒント
あなたは、仮想環境にインストールされ、鼻のコピーを持っている必要があります。 pip install
フラグで-I
を実行し、それはすでにグローバルサイトパッケージでインストールされていても、virtualenvのに鼻のインストールを強制するためにます:
(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"
私は、あなたが上記のように、そのslither
で、同じsetup.py
属性を持っていた、本当に基本的なパッケージtest_suite
を作成しました。それから私は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で鼻をインストールしてみてください、および/またはnosetests-2.7
を実行します。私はあなたのvenvパイソンが2.7である場合、@のアンドレア・zoncaの答えは同じ効果があると考えています。
おそらくこれは、最近の変化ですが、私はピップを通じてnosetestsをインストールしたときに私のために、(当然)virtualenvので正しく動作します。
.virtualenvs/<env>/bin
にインストール実行可能nosetestsがあったが、 あなたはvirtualenvの中に設置さよりも高い優先順位であなたのnosetests
にどこかにインストールされているPATH
を持っているかもしれません。あなたの現在のvirtualenvの最優先に設置されnose
モジュールおよび関連nosetests
スクリプトを与えるために簡単な方法は、あなたのPATH
を編集することです。
export PATH=/path/to/current/virtualenv/bin:$PATH