خطأ في الاستيراد: لا وحدة نمطية تسمى testrunner

تابعت هذا لإضافة zc.recipe.testrunner إلى my buildout. يمكنني تشغيل الإصدار بنجاح ولكن عندما أقوم بتشغيل bin/test ، أحصل على:

ImportError: No module named testrunner

لدي zope.testrunner-4.0.4-py2.4.egg in

/usr/local/lib/python2.4/site-packages

أنا أيضا معلقة

zope.testrunner = 4.0.4
zc.recipe.testruner = 1.4.0
zc.recipe.egg = 1.3.2

عندما ركضت بالبناء ، استخدمت -vvv وحصلت على:

...
Installing 'zc.recipe.testrunner'.
We have the distribution that satisfies 'zc.recipe.testrunner==1.4.0'.
Egg from site-packages: z3c.recipe.scripts 1.0.1
Egg from site-packages: zope.testrunner 4.0.4
Egg from site-packages: zope.interface 3.8.0
Egg from site-packages: zope.exceptions 3.7.1
...
We have the distribution that satisfies 'zope.testrunner==4.0.4'.
Egg from site-packages: zope.testrunner 4.0.4
Adding required 'zope.interface'
 required by zope.testrunner 4.0.4.
We have a develop egg: zope.interface 0.0
Adding required 'zope.exceptions'
 required by zope.testrunner 4.0.4.
We have a develop egg: zope.exceptions 0.0
...

لماذا أحصل على ImportError؟ هل zope.testrunner غير مثبت بشكل صحيح؟

تعديل: </قوي>

هذا هو الجزء ذو الصلة في عملية البناء:

[buildout]
...
parts =
    ...
    test

[test]
recipe = zc.recipe.testrunner
defaults = ['--auto-color', '--auto-progress']
eggs = 
    my.product

هذا هو المحتوى في bin/test :

#!/usr/local/bin/python2.4 -S

import sys
sys.path[0:0] = [
    '/home/jil/mySandbox/myTrunk/parts/test/site-packages',
    ]


import os
path = sys.path[0]
if os.environ.get('PYTHONPATH'):
    path = os.pathsep.join([path, os.environ['PYTHONPATH']])
os.environ['BUILDOUT_ORIGINAL_PYTHONPATH'] = os.environ.get('PYTHONPATH', '')
os.environ['PYTHONPATH'] = path
import site # imports custom buildout-generated site.py
import os
sys.argv[0] = os.path.abspath(sys.argv[0])
os.chdir('/home/jil/mySandbox/myTrunk/parts/test/working-directory')

import zope.testrunner

if __name__ == '__main__':
    zope.testrunner.run((['--auto-color', '--auto-progress']) + [
        '--test-path', '/home/jil/mySandbox/myTrunk/src/my.product',
        ])    

هذا هو الخطأ بعد تشغيل bin/test :

Traceback (most recent call last):
File "/home/jil/mySandbox/myTrunk/bin/test", line 20, in ?
  import zope.testrunner
ImportError: No module named testrunner
0
بطريقة ما ولد بن/اختبار النصي غير صالح. قد يكون ذلك أن testrunner متوافق فقط مع Python 2.6 + Plone 4؟
وأضاف المؤلف Mikko Ohtamaa, مصدر
في أي حال ، لا يوجد أي بيض في sys.path الخاص بنصوص الاختبار/الاختبار حتى لا يمكن أن ينجح.
وأضاف المؤلف Mikko Ohtamaa, مصدر
MikkoOhtamaa أنا أستخدم Plone3/Python2.4. تقول هنا أن zc.recipe.testrunner متوافق مع Plone 4 و Plone 3 و Plone 2.5.x . بالإضافة إلى ذلك ، يعتمد zc.recipe.testrunner على zope.testrunner (الذي يعتمد على zope.interface و zope.exceptions). zope.testrunner أبدًا إزالة دعم Pytho
وأضاف المؤلف JiL, مصدر
اعرض لنا التوصيف الخاص بقسم الاختبار الخاص ببنيتك ، ومحتويات البرنامج النصي/bin test الذي تم تكوينه.
وأضاف المؤلف David Glick, مصدر
وربما التتبع الكامل للخطأ
وأضاف المؤلف Giacomo Spettoli, مصدر

1 إجابة

كان لي نفس المشكلة. على الأقل في حالتي ، كان السبب هو خلط التبعيات المثبتة بالفعل في "حزم المواقع" والاعتمادية التي تم تثبيتها بالبناء في "البيض": zope.deprecation و zope.interface كانت موجودة بالفعل في دليل "حزم المواقع" الخاص بي ، وبالتالي لم تكن إعادة تثبيته بواسطة buildout. يبدو أن معالجة المسار في الملف التنفيذي "bin/test" تستورد حزمة "zope" من "حزم المواقع" ، دون الحزمة الفرعية "testrunner".

جرّب إزالة جميع zope. * الحزم من "حزم المواقع" وإعادة تشغيل الإصدار ، أو استخدم "تضمين - site-packages = false" في قسم "[buildout]" في buildout.cfg. الحل الأول عمل بالنسبة لي.

0
وأضاف
ساعد هذا الجواب ، شكرا لك. لم أكن بحاجة إلى include-site-packages ، لقد قمت للتو بإنشاء virtualenv جديد وقمت ببناء فقط في ذلك ، الأمر الذي نجح.
وأضاف المؤلف Ida Ebkes, مصدر