我按照thiszc.recipe.testrunner添加到我的布局中。我可以成功运行buildout,但是当我运行bin/test时,我得到:

ImportError: No module named testrunner


我有zope.testrunner-4.0.4-py2.4.egg

/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

最佳答案

我有同样的问题。至少在我的情况下,原因是混合了已经安装在“ site-packages”中的依赖项和通过buildout安装在“ eggs”中的依赖项:zope.deprecation和zope.interface已经在我的“ site-packages”目录中,因此没有通过buildout重新安装。在'bin / test'可执行文件上的路径操作似乎是从'site-packages'导入'zope'软件包,而没有'testrunner'子软件包。

尝试从“ site-packages”中删除所有zope。*软件包并重新运行构建,或者在buildout.cfg的“ [buildout]”部分中使用“ include-site-packages = false”。第一个解决方案对我有用。

关于python - 导入错误:没有名为testrunner的模块,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11146843/

10-11 19:21