AttributeError xmlproc beim Import von Zope aus

Django, Flask, Bottle, WSGI, CGI…
Antworten
sbunse
User
Beiträge: 3
Registriert: Freitag 17. November 2006, 23:44

Hi,
ich habe ein seltsames Problem mit Zope. Ich wollte das Product CMFReportTool einsetzen, also habe ich alle dependencies installiert, CMFReportTool (svn trunk vom 16.11.) in den Products Ordner der Instanz platziert und Zope neu gestartet.
Dabei kommt es aber leider zu folgendem traceback im event.log:

Code: Alles auswählen

2006-11-18T09:54:13 ERROR Zope Could not import Products.CMFReportTool
Traceback (most recent call last):
  File "/usr/lib/zope2.8/lib/python/OFS/Application.py", line 698, in import_product
    product=__import__(pname, global_dict, global_dict, silly)
  File "/var/lib/zope2.8/instance/default/Products/CMFReportTool/__init__.py", line 28, in ?
    import ReportTool
  File "/var/lib/zope2.8/instance/default/Products/CMFReportTool/ReportTool.py", line 53, in ?
    from html2pml import Html2Pml
  File "/var/lib/zope2.8/instance/default/Products/CMFReportTool/html2pml.py", line 31, in ?
    from xml.sax.writer import PrettyPrinter, XmlWriter
  File "/usr/lib/python2.3/site-packages/_xmlplus/sax/writer.py", line 146, in ?
    class _XMLDTDLoader(xml.parsers.xmlproc.xmlapp.DTDConsumer):
AttributeError: 'module' object has no attribute 'xmlproc'
Das seltsame daran ist jetzt, dass das nur passiert, wenn der Import unter Zope ausgeführt wird, und zwar sowohl mit Zope 2.8.5-1 als auch mit Version 2.9.5-1. Direkt vom Python Interpreter (getestet mit Version 2.3.5-5 und 2.4.3-8) funktioniert der gleiche Import (from xml.sax.writer import PrettyPrinter, XmlWriter) einwandfrei.
Um eine zerschossene Installation von Irgendwas auszuschließen habe ich das Ganze auf zwei Rechnern getestet, das Problem war auf beiden dasselbe.

Das ganze läuft unter Debian etch (testing), ein paar noch nicht genannte Versionsnummern von beteiligten Debianpaketen:
- python-reportlab: 2.0dfsg1
- python-xml: 0.8.4-5
- python-imaging: 1.1.5-11

Hat irgendjemand vielleicht eine Idee woran das liegen kann oder, noch wichtiger, wie man es beheben kann?

Nachtrag:
Ich habe eben nochmal etwas Anderes probiert:
Ich habe das CMFReportTool wieder aus dem Products Ordner entfernt und die problematische importzeile (from xml.sax.writer import PrettyPrinter, XmlWriter) in die __init__.py eines eigenen Produkts eingefügt. Dabei gab es kein Problem, es scheint also kein generelles Zopeproblem zu sein, sondern liegt wirklich am CMFReportTool.


Danke schonmal für Eure Hilfe
Stefan
Zuletzt geändert von sbunse am Samstag 18. November 2006, 12:36, insgesamt 1-mal geändert.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

sbunse hat geschrieben:also habe ich alle dependencies installiert
Hi Stefan!

Willkommen im Python-Forum!

Vielleicht hast du die Abhängigkeiten für das falsche Python installiert.

Schau die mal die Datei ``bin/zopectl`` im Ordner deiner Zope-Instanz an. Dort steht drinnen, welche Python-Version von dieser Zope-Instanz verwendet wird.

Ich denke nämlich immer noch, dass das Paket "python-xml" nicht für die Python-Version installiert wurde, die von Zope eingesetzt wird. Ja, ich habe gelesen, dass du es schon getestet hast. Aber was für einen Grund sollte es sonst geben, dass es Probleme beim Importieren von ``xml.sax.writer`` gibt?

Leider fällt mir im Moment nicht mehr dazu ein.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
sbunse
User
Beiträge: 3
Registriert: Freitag 17. November 2006, 23:44

Hi Gerold,
danke für Deine schnelle Antwort.

Ich habe gerade mal in die zopectl (von der 2.9er Instanz) reingeschaut, diese verwendet '/usr/bin/python2.4'.
Beim Testen ohne Zope habe ich den Import sowohl mit python2.3 als auch mit python2.4 getestet => keine Probleme.
Das Paket python-xml macht seine Dateien per Symlinks im jeweiligen site-packages Verzeichnis beiden Pythonversionen zugänglich.
Wie ich eben festgestellt habe (siehe Nachtrag oben) scheint das CMFReportTool da irgendetwas kaputtzumachen... ohne CMFReportTool funktioniert das Importieren auch unter Zope (zumindest unter 2.9, 2.8 habe ich jetzt nicht mehr getestet, es soll im Endeffekt auch nur unter 2.9 laufen).

Gruß
Stefan
sbunse
User
Beiträge: 3
Registriert: Freitag 17. November 2006, 23:44

Ich hab zwar nicht wirklich den Fehler gefunden, aber zumindest einen workaround...
In reportlab.lib.xmllib war eine Zeile

Code: Alles auswählen

from _xmlplus.parsers import sgmlop
Vor dieser Zeile war der problematische Import kein Problem, dahinter gab es den oben beschriebenen Fehler. Ich habe die Zeile jetzt ersetzt durch:

Code: Alles auswählen

from xml.parsers import sgmlop
und es funktioniert...

Anschließend habe ich mir noch den daily snapshot von reportlab angeschaut, dort lautet die entsprechende Zeile einfach:

Code: Alles auswählen

import sgmlop
und verursacht auch kein Problem...
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

sbunse hat geschrieben:aber zumindest einen workaround...
Hi sbunse!

Das freut mich! :-)

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten