2012-07-09 102 views
3

我在我的virtualenv python中有zopeskel 2.21.2,它工作正常。同时,我的Plone buildout中也有相同版本的zopeskel(位于~/.buildout/eggs)。但是,它不起作用。运行zopeskel --list引发以下错误:Zopeskel ImportError:无法导入名称BasicNamespace

ImportError: cannot import name BasicNamespace 

的意见,从这个link说,除去蛋。我删除了〜/ .buildout/cache/dist /中的egg以及缓存的包,并再次运行build。但是,问题依然存在。有趣的是,在同一个buildout中的贴子脚本正在工作。

在buildout.cfg我的ZopeSkel部分看起来象下面这样:

'/home/user/.buildout/eggs/Paste-1.7.5.1-py2.6.egg', 
'/home/user/.buildout/eggs/distribute-0.6.24-py2.6.egg', 
'/home/user/.buildout/eggs/PasteDeploy-1.3.4-py2.6.egg', 
'/home/user/.buildout/eggs/PasteScript-1.7.4.2-py2.6.egg', 

完全回溯:

[[email protected] myplone.site]$ ./bin/zopeskel --list 
Traceback (most recent call last): 
    File "./bin/zopeskel", line 346, in <module> 
    import zopeskel.zopeskel_script 
    File "/home/user/.buildout/eggs/ZopeSkel-2.21.2-py2.6.egg/zopeskel/__init__.py", line 2, in <module> 
    from zopeskel.basic_namespace import BasicNamespace 
    File "/home/user/.buildout/eggs/ZopeSkel-2.21.2-py2.6.egg/zopeskel/basic_namespace.py", line 2, in <module> 
    from zopeskel.vars import var, DottedVar, StringVar, BooleanVar, TextVar 
    File "/home/user/.buildout/eggs/ZopeSkel-2.21.2-py2.6.egg/zopeskel/vars.py", line 2, in <module> 
    from paste.script.templates import var as base_var 
    File "/home/user/.buildout/eggs/PasteScript-1.7.4.2-py2.6.egg/paste/script/templates.py", line 6, in <module> 
    import copydir 
    File "/home/user/.buildout/eggs/PasteScript-1.7.4.2-py2.6.egg/paste/script/copydir.py", line 4, in <module> 
    import pkg_resources 
    File "/home/user/.buildout/eggs/distribute-0.6.24-py2.6.egg/pkg_resources.py", line 2727, in <module> 
    add_activation_listener(lambda dist: dist.activate()) 
    File "/home/user/.buildout/eggs/distribute-0.6.24-py2.6.egg/pkg_resources.py", line 700, in subscribe 
    callback(dist) 
    File "/home/user/.buildout/eggs/distribute-0.6.24-py2.6.egg/pkg_resources.py", line 2727, in <lambda> 
    add_activation_listener(lambda dist: dist.activate()) 
    File "/home/user/.buildout/eggs/distribute-0.6.24-py2.6.egg/pkg_resources.py", line 2230, in activate 
    map(declare_namespace, self._get_metadata('namespace_packages.txt')) 
    File "/home/user/.buildout/eggs/distribute-0.6.24-py2.6.egg/pkg_resources.py", line 1827, in declare_namespace 
    _handle_ns(packageName, path_item) 
    File "/home/user/.buildout/eggs/distribute-0.6.24-py2.6.egg/pkg_resources.py", line 1797, in _handle_ns 
    loader.load_module(packageName); module.__path__ = path 
    File "/usr/lib/python2.6/pkgutil.py", line 238, in load_module 
    mod = imp.load_module(fullname, self.file, self.filename, self.etc) 
    File "/home/user/.buildout/eggs/ZopeSkel-2.21.2-py2.6.egg/zopeskel/__init__.py", line 2, in <module> 
    from zopeskel.basic_namespace import BasicNamespace 
ImportError: cannot import name BasicNamespace 

什么能

[zopeskel] 
recipe = zc.recipe.egg 
eggs = 
    ZopeSkel 
    Paste 
    PasteDeploy 
    PasteScript 
    zopeskel.dexterity 
    ${instance:eggs} 

在我的扩建使用的一些包版本错误?

+0

什么粘贴的版本,PasteDeploy和PasteScript安装?您可能还想仔细检查'bin/zopeskel'脚本中的ZopeSkel egg版本。最后但并非最不重要的,请在你的文章中加入*完整*回溯;往往有隐藏在那帮助我们帮助你的线索。 – 2012-07-09 08:12:32

+0

我编辑了我的帖子以包含您提问的信息。在bin/zopeskel中有一行'import zopeskel.zopeskel_script',这是否意味着它在我的virtualenv python中使用了zopeskel版本,因为我在那里还有zopeskel? – h2o 2012-07-09 08:31:27

+0

不,通过'bin/zopeskel'脚本将ZopeSkel蛋推入sys.path将首先被搜索到。 – 2012-07-09 08:34:07

回答

5

这通常发生在ZopeSkel/Paster本地安装(buildout)和全局Python安装中。由于Python管理站点包的过程失败,最终导致不兼容的组合。

解决方案:

http://docs.plone.org/manage/troubleshooting/exceptions.html#from-zopeskel-basic-namespace-import-basicnamespace

+0

我在我的搜索中找到了链接并尝试修复。但是,它没有提到它适用于我的用例。我在我的virtualenv中删除了版本,现在在我的buildout中删除了zopeskel。顺便说一句,这是更好的删除,在virtualenv或在buildout? – h2o 2012-07-10 03:15:57

+0

virtualenv。最好让构建管理Plone相关的东西。这主要是管理决策,在技术上它可能是。 – 2012-07-10 07:29:21

+0

我也倾向于virtualenv,因为它可以用于其他项目。我不需要在每个build中配置zopeskel。我只需要激活我的virtualenv。谢谢。 – h2o 2012-07-10 07:37:28

相关问题