2012-07-09 3 views
3

У меня zopeskel 2.21.2 в моем виртуальном python, и он отлично работает. Между тем, у меня также есть такая же версия zopeskel в моем Plone buildout (находится в ~/.buildout/eggs). Однако это не работает. Запуск zopeskel --list выдает следующее сообщение об ошибке:Zopeskel ImportError: не может импортировать имя BasicNamespace

ImportError: cannot import name BasicNamespace 

совет от этого link говорит, чтобы удалить яйца. Я удалил яйцо, а также кешированный пакет в ~/.buildout/cache/dist/и снова запустил buildout. Однако проблема сохраняется. Самое забавное, что работает скрипт пастера в том же самом составе.

Мой ZopeSkel раздел в buildout.cfg выглядит следующим образом:

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

некоторых версий пакетов, используемых в моем билдаута:

'/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 

Что может быть неправильно?

+0

Какие версии Paste, PasteDeploy и PasteScript установлены? Вы также можете дважды проверить версию яйца ZopeSkel в сценарии 'bin/zopeskel'. И последнее, но не менее важное: пожалуйста, включите * ваш * traceback в свой пост; часто есть скрытые скрытые в этом, которые помогают нам помочь вам. –

+0

Я отредактировал свое сообщение, чтобы включить информацию, которую вы задали. В bin/zopeskel есть строка 'import zopeskel.zopeskel_script', означает ли это, что она использует версию zopeskel в моем виртуальном python, так как у меня там тоже zopeskel? – h2o

+0

Нет, в этом случае поиск в файле sys.path с помощью скрипта 'bin/zopeskel' будет искать это яйцо ZopeSkel. –

ответ

5

Как правило, у вас есть ZopeSkel/Paster, установленный как локально (buildout), так и в глобальной установке Python. Из-за сбоев в процессе управления сайтом Python вы получаете несовместимое объединение.

Решение:

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

+0

Я нашел ссылку в своем поиске и попытался исправить. Однако он не упомянул, что это относится к моему варианту использования. Я удалил версию в моем virtualenv, а теперь zopeskel в моих построениях работает. BTW, который лучше удалить, тот, что есть в virtualenv или в buildout? – h2o

+0

virtualenv. Лучше позволить строительству управлять вещами, связанными с Plone. Это главным образом управленческое решение, технически это может быть и то. –

+0

Я тоже склонялся к virtualenv, так как он может использоваться для других проектов. Мне не нужно настраивать zopeskel в каждом из моих построений. Мне просто нужно активировать свой virtualenv. Благодарю. – h2o

Смежные вопросы