المشاكل باستخدام أنفه في virtualenv
-
21-08-2019 - |
سؤال
وأنا غير قادر على استخدام الأنف (nosetests) في مشروع virtualenv - لا يمكن أن يبدو للعثور على الحزم المثبتة في بيئة virtualenv
.والشيء الغريب هو أنني يمكن أن يحدد
test_suite = 'nose.collector'
وفي setup.py وتشغيل الاختبارات على ما يرام كما
python setup.py test
ولكن عند تشغيل nosetests مباشرة، وهناك كل أنواع الأخطاء الاستيراد.
ولقد حاولت ذلك مع كل من التثبيت على مستوى النظام الأنف ومجموعة virtualenv الأنف ولا حظ.
وأي أفكار؟
والشكر !!
المحلول
هل أنت قادرة على تشغيل myenv/bin/python /usr/bin/nosetests
؟ يجب أن تشغيل الأنف باستخدام مجموعة مكتبة بيئة الظاهري.
نصائح أخرى
وتحتاج إلى الحصول على نسخة من الأنف المثبتة في بيئة افتراضية. من أجل إجبار تركيب الأنف إلى 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"
وأنا خلقت حزمة 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
subcommand:
(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
إذا كنت تريد أن تكتشف الاختبارات في وحدات بيثون التي هي للتنفيذ.
إذا فشل كل شيء آخر، حاول تثبيت الأنف في venv الخاص بك، و / أو تشغيل nosetests-2.7
. أعتقد الجواب @ اندريا-ZONCA لديه نفس التأثير إذا الثعبان venv الخاص بك هو 2.7
ولعل هذا هو التغيير الذي حدث مؤخرا، ولكن بالنسبة لي، عندما ركبت nosetests من خلال نقطة، وكان هناك nosetests تنفيذ المثبتة في .virtualenvs/<env>/bin
، والتي (لا يثير الدهشة) تعمل بشكل صحيح مع virtualenv.
قد يكون لديك nosetests
المثبت في مكان آخر في PATH
مع أولوية أعلى من تلك المثبتة في virtualenv الخاص بك. وهناك طريقة سريعة لإعطاء وحدة nose
وما يرتبط بها النصي nosetests
المثبتة في الأولوية virtualenv أعلى الحالية هي لتحرير PATH
الخاص بك:
export PATH=/path/to/current/virtualenv/bin:$PATH