2013-01-16 13 views
7

Próbuję zaimportować niektóre statyczne strony z witryny za pomocą funnelweb add-on dla platformy. Oto, co piszę: bin/funnelweb --crawler:url=http://wiki.scandiatransplant.com --crawler:max=50 --ploneupload=http://admin:[email protected]:8080/TestPage.Błąd funnelweb, nie można zaimportować OrderedDict

mogę dostać ten błąd:

ImportError: cannot import name OrderedDict 

Pełne traceback jest dodany poniżej. Czy ktoś wie, jak rozwiązać ten problem?

Traceback (most recent call last): 
    File "bin/funnelweb", line 116, in <module> 
    mr.migrator.runner.runner({},"funnelweb.remote") 
    File "/home/magiq/Plone/buildout-cache/eggs/mr.migrator-1.0.1-py2.6.egg/mr/migrator/runner/__init__.py", line 69, in runner 
    load_config('autoinclude.zcml', mr.migrator) 
    File "/home/magiq/Plone/buildout-cache/eggs/Zope2-2.13.12-py2.6.egg/Zope2/App/zcml.py", line 55, in load_config 
    _context = xmlconfig.file(config, package, _context, execute=execute) 
    File "/home/magiq/Plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.6.egg/zope/configuration/xmlconfig.py", line 649, in file 
    include(context, name, package) 
    File "/home/magiq/Plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.6.egg/zope/configuration/xmlconfig.py", line 548, in include 
    processxmlfile(f, context) 
    File "/home/magiq/Plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.6.egg/zope/configuration/xmlconfig.py", line 380, in processxmlfile 
    parser.parse(src) 
    File "/home/magiq/Plone/Python-2.6/lib/python2.6/xml/sax/expatreader.py", line 107, in parse 
    xmlreader.IncrementalParser.parse(self, source) 
    File "/home/magiq/Plone/Python-2.6/lib/python2.6/xml/sax/xmlreader.py", line 123, in parse 
    self.feed(buffer) 
    File "/home/magiq/Plone/Python-2.6/lib/python2.6/xml/sax/expatreader.py", line 207, in feed 
    self._parser.Parse(data, isFinal) 
    File "/home/magiq/Plone/Python-2.6/lib/python2.6/xml/sax/expatreader.py", line 349, in end_element_ns 
    self._cont_handler.endElementNS(pair, None) 
    File "/home/magiq/Plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.6.egg/zope/configuration/xmlconfig.py", line 359, in endElementNS 
    self.context.end() 
    File "/home/magiq/Plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.6.egg/zope/configuration/config.py", line 558, in end 
    self.stack.pop().finish() 
    File "/home/magiq/Plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.6.egg/zope/configuration/config.py", line 706, in finish 
    actions = self.handler(context, **args) 
    File "/home/magiq/Plone/buildout-cache/eggs/z3c.autoinclude-0.3.4-py2.6.egg/z3c/autoinclude/zcml.py", line 104, in includePluginsDirective 
    includeZCMLGroup(_context, info, filename) 
    File "/home/magiq/Plone/buildout-cache/eggs/z3c.autoinclude-0.3.4-py2.6.egg/z3c/autoinclude/zcml.py", line 30, in includeZCMLGroup 
    include(_context, filename, includable_package) 
    File "/home/magiq/Plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.6.egg/zope/configuration/xmlconfig.py", line 548, in include 
    processxmlfile(f, context) 
    File "/home/magiq/Plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.6.egg/zope/configuration/xmlconfig.py", line 380, in processxmlfile 
    parser.parse(src) 
    File "/home/magiq/Plone/Python-2.6/lib/python2.6/xml/sax/expatreader.py", line 107, in parse 
    xmlreader.IncrementalParser.parse(self, source) 
    File "/home/magiq/Plone/Python-2.6/lib/python2.6/xml/sax/xmlreader.py", line 123, in parse 
    self.feed(buffer) 
    File "/home/magiq/Plone/Python-2.6/lib/python2.6/xml/sax/expatreader.py", line 207, in feed 
    self._parser.Parse(data, isFinal) 
    File "/home/magiq/Plone/Python-2.6/lib/python2.6/xml/sax/expatreader.py", line 349, in end_element_ns 
    self._cont_handler.endElementNS(pair, None) 
    File "/home/magiq/Plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.6.egg/zope/configuration/xmlconfig.py", line 359, in endElementNS 
    self.context.end() 
    File "/home/magiq/Plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.6.egg/zope/configuration/config.py", line 558, in end 
    self.stack.pop().finish() 
    File "/home/magiq/Plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.6.egg/zope/configuration/config.py", line 705, in finish 
    args = toargs(context, *self.argdata) 
    File "/home/magiq/Plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.6.egg/zope/configuration/config.py", line 1397, in toargs 
    args[str(name)] = field.fromUnicode(s) 
    File "/home/magiq/Plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.6.egg/zope/configuration/fields.py", line 137, in fromUnicode 
    value = self.context.resolve(name) 
    File "/home/magiq/Plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.6.egg/zope/configuration/config.py", line 179, in resolve 
    mod = __import__(mname, *_import_chickens) 
    File "/home/magiq/Plone/buildout-cache/eggs/transmogrify.webcrawler-1.2.1-py2.6.egg/transmogrify/webcrawler/webcrawler.py", line 21, in <module> 
    from collections import OrderedDict 
zope.configuration.xmlconfig.ZopeXMLConfigurationError: File "/home/magiq/Plone/buildout-cache/eggs/mr.migrator-1.0.1-py2.6.egg/mr/migrator/autoinclude.zcml", line 10.4-10.85 
    ZopeXMLConfigurationError: File "/home/magiq/Plone/buildout-cache/eggs/transmogrify.webcrawler-1.2.1-py2.6.egg/transmogrify/webcrawler/configure.zcml", line 9.4-10.46 
    ImportError: cannot import name OrderedDict 

Odpowiedz

25

OrderedDict to nowa klasa dodana do Pythona 2.7, więc brakuje jej w twoim przypadku.

można zainstalować backport:

pip install ordereddict 

lub dodać, że jako zależność w swoim buildout i edytować Plone/buildout-cache/eggs/transmogrify.webcrawler-1.2.1-py2.6.egg/transmogrify/webcrawler/webcrawler.py linii 21, aby zmienić import z:

from collections import OrderedDict 

do

try: 
    from collections import OrderedDict 
except ImportError: 
    # python 2.6 or earlier, use backport 
    from ordereddict import OrderedDict 

Złożyłem problem w numerze funnelweb issue tracker, aby zażądać dodania tego do przyszłej wersji pakietu, patrz issue 22.

+0

Mam zainstalowany funnelweb na trzeciej maszynie i mam problem z komunikatem, że nie można zaimportować OrderedDict. Zrobiłem jak sugerowałem tutaj (który pracował dla mnie wcześniej na 2 innych maszynach), ale na tej trzeciej maszynie nadal narzeka. Czy istnieje inne podejście niż wymienione powyżej? Ponadto nie mam najnowszej wersji Plone na tym komputerze (ale wciąż jest to wersja 4.x). Czy może to wpłynąć na instalację zamówionego wyroku? Raczej nie ulepszam plonu, jeśli tak nie jest, przyczyną niekompatybilności dodatków. – user1960836

+0

Wcześniejsze wersje Plone nie obsługują Pythona 2.7 (oficjalnie prawdopodobnie będzie działać), więc prawdopodobnie używasz Pythona w wersji 2.6 lub wcześniejszej. Musisz wtedy zainstalować pakiet 'ordereddict', do właściwej instalacji Pythona. Jeśli 'import ordereddict' nie powiedzie się w pytaniu python (i upewnij się, że masz 100% pewności, że masz * właściwy * python, ten, który uruchamia serwer Plone), to nie zainstalowałeś go we właściwej lokalizacji. –

+0

W rzeczywistości, tutaj jest kilka stacktrace: z importu kolekcji OrderedDict zope.configuration.xmlconfig.ZopeXMLConfigurationError: Plik "/usr/local/Plone/buildout-cache/eggs/mr.migrator-1.0.1-py2.6 .egg/mr/migrator/autoinclude.zcml ", wiersz 10.4-10.85 ZopeXMLConfigurationError: Plik" /usr/local/Plone/buildout-cache/eggs/transmogrify.ploneremote-1.3-py2.6.egg/transmogrify/ploneremote/ configure.zcml ", wiersz 24.4-25.67 ImportError: nie można zaimportować nazwy OrderedDict – user1960836

Powiązane problemy