2012-07-09 7 views
3

내 virtualenv python에 zopeskel 2.21.2가 있는데 제대로 작동합니다. 한편, 나는 Plone 빌드 아웃 (~/.buildout/eggs에 위치)에 동일한 버전의 zopeskel을 가지고있다. 그러나 작동하지 않습니다. zopeskel --list을 실행하면 다음과 같은 오류가 발생합니다 :이 link에서Zopeskel ImportError : 이름을 가져올 수 없습니다. BasicNamespace

ImportError: cannot import name BasicNamespace 

조언은 달걀을 제거했다. ~/.buildout/cache/dist /에있는 캐시 된 패키지뿐만 아니라 알을 제거했으며 buildout을 다시 실행했습니다. 그러나 문제는 계속됩니다. 재미있는 점은 동일한 빌드 아웃의 paster 스크립트가 작동하고 있다는 것입니다.

[[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 

무엇을 할 수 :

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

전체 역 추적 : 내 buildout에 사용

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

일부 패키지 버전 :

buildout.cfg 나의 zopeskel 섹션은 다음과 같습니다 잘못된?

+0

를 설치? 'bin/zopeskel' 스크립트에서 ZopeSkel의 달걀 버전을 재확인 할 수도 있습니다. 마지막으로, 게시물에 * 완전한 * 추적을 포함하십시오. 종종 우리가 당신을 도울 수있는 단서가 숨어 있습니다. –

+0

귀하가 요청한 정보를 포함하도록 내 게시물을 편집했습니다. bin/zopeskel에는 'import zopeskel.zopeskel_script'라는 줄이 있습니다. 이것은 zopekel을 가지고 있기 때문에 내 virtualenv python에서 zopeskel 버전을 사용한다는 것을 의미합니까? – h2o

+0

아니요,'bin/zopeskel' 스크립트로 sys.path에 밀어 넣은 ZopeSkel 달걀이 먼저 검색됩니다. –

답변

5

대개 ZopeSkel/Paster가 로컬 (빌드 아웃)과 글로벌 Python 설치에 설치되어 있습니다. 사이트 패키지를 관리하는 파이썬 프로세스의 실패로 인해 호환되지 않는 조합이 생깁니다.

솔루션 : 무엇 붙여 넣기 버전의 PasteDeploy 및 PasteScript이

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

+0

내 검색에서 링크를 발견하고 수정했습니다. 그러나 그것은 유스 케이스에 적용된다는 언급은하지 않았다. 내 가상 작품에서 버전을 삭제하고 지금은 내 buildout 작품 zopekel. BTW, 어느 것이 삭제하는 것이 더 낫습니다, 하나 또는 가상 빌드에 있습니까? – h2o

+0

virtualenv. Plone 관련 작업을 관리하기 위해 빌드 아웃을 사용하는 것이 좋습니다. 이것은 주로 경영진의 결정이며, 기술적으로도 마찬가지 일 수 있습니다. –

+0

다른 프로젝트에서도 사용할 수 있으므로 virtualenv쪽으로 기울어졌습니다. 각 빌드 아웃에서 zopeskel을 구성 할 필요가 없습니다. 난 내 virtualenv 활성화해야합니다. 감사. – h2o

관련 문제