2013-01-16 16 views
7

Sto cercando di importare alcune pagine statiche da un sito utilizzando il componente aggiuntivo funnelweb per plone. Ecco cosa scrivo: bin/funnelweb --crawler:url=http://wiki.scandiatransplant.com --crawler:max=50 --ploneupload=http://admin:[email protected]:8080/TestPage.Errore Funnelweb, impossibile importare OrderedDict

ottengo questo errore:

ImportError: cannot import name OrderedDict 

La piena traceback viene aggiunto sotto. Qualcuno sa come risolvere questo?

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 

risposta

25

OrderedDict è una nuova classe aggiunta a Python 2.7, in modo che manca nel vostro caso.

È possibile installare un backport:

pip install ordereddict 

o aggiungere che, come una dipendenza nella vostra buildout, e modificare Plone/buildout-cache/eggs/transmogrify.webcrawler-1.2.1-py2.6.egg/transmogrify/webcrawler/webcrawler.py la linea 21 per cambiare l'importazione da:

from collections import OrderedDict 

a

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

Ho archiviato un problema nello funnelweb issue tracker per richiedere che questo venga aggiunto a una versione futura del pacchetto, vedere issue 22.

+0

Ho installato funnelweb su una terza macchina e avendo problemi con il messaggio che non è possibile importare OrderedDict. Ho fatto come suggerito qui (che ha funzionato per me in precedenza su 2 altre macchine), ma su questa 3a macchina, si lamenta ancora. C'è un altro approccio rispetto a quelli sopra elencati? Inoltre, non ho la versione più recente di Plone su questa macchina (ma è ancora versione 4.x). Questo può influenzare l'installazione di ordereddict? Preferisco non aggiornare plone se questo non è il caso, causa di incompatibilità di componenti aggiuntivi. – user1960836

+0

Le versioni precedenti di Plone non supportano Python 2.7 (ufficialmente, probabilmente verrà eseguito), quindi probabilmente stai usando Python 2.6 o versioni precedenti. È necessario installare il pacchetto 'ordereddict' quindi, nell'installazione Python corretta. Se 'import ordereddict' fallisce nel tuo prompt python (e assicurati di essere sicuro al 100% di avere il * right * python, quello che esegue il tuo server Plone), allora non l'hai installato nella giusta posizione. –

+0

In realtà, ecco alcuni degli stacktrace: dall'importazione delle raccolte OrderedDict zope.configuration.xmlconfig.ZopeXMLConfigurationError: File "/usr/local/Plone/buildout-cache/eggs/mr.migrator-1.0.1-py2.6 .egg/mr/migrator/autoinclude.zcml ", riga 10.4-10.85 ZopeXMLConfigurationError: File" /usr/local/Plone/buildout-cache/eggs/transmogrify.ploneremote-1.3-py2.6.egg/transmogrify/ploneremote/ configure.zcml ", riga 24.4-25.67 ImportError: impossibile importare nome OrderedDict – user1960836

Problemi correlati