python xml-parsing lxml py2exe

python lxml con py2exe



xml-parsing (1)

Intenta usar PyInstaller en lugar de py2exe. python pyinstaller.py YourPath/xml_a.py tu programa a .exe binario sin problemas simplemente ejecutando python pyinstaller.py YourPath/xml_a.py .

He generado un XML con dom y quiero usar lxml para imprimir bastante el xml.

este es mi código para imprimir bastante el xml

def prettify_xml(xml_str): import lxml.etree as etree root = etree.fromstring(xml_str) xml_str = etree.tostring(root, pretty_print=True) return xml_str

mi salida debe ser una cadena con formato xml.

Obtuve este código de alguna publicación en stactoverflow. Esto funciona sin problemas cuando estoy compilando con python. Pero cuando convierto mi proyecto a un binario creado a partir de py2exe (mi binario es el servicio de Windows con un namedpipe). Tuve dos problemas:

  1. Mi servicio no estaba comenzando, lo resolví añadiendo lxml.etree en la opción includes en py2exe. luego, mi servicio comenzó correctamente.

  2. cuando la generación xml en aquí se llama, el error que estoy viendo en mi log ''module'' object has no attribute ''fromstring''

¿Dónde rectifico este error? ¿Y la solución de mi primer problema es correcta?

mi código de generación xml:

from xml.etree import ElementTree from xml.dom import minidom from xml.etree.ElementTree import Element, SubElement, tostring, XML import lxml.etree def prettify_xml(xml_str): root = lxml.etree.fromstring(xml_str) xml_str = lxml.etree.tostring(root, pretty_print=True) return xml_str def dll_xml(status): try: xml_declaration = ''<?xml version="1.0" standalone="no" ?>'' rootTagName=''response'' root = Element(rootTagName) root.set(''id'' , ''rp001'') parent = SubElement(root, ''command'', opcode =''-ac'') # Create children chdtag1Name = ''mode'' chdtag1Value = ''repreport'' chdtag2Name=''status'' chdtag2Value = status fullchildtag1 = ''''+chdtag1Name+'' value = "''+chdtag1Value+''"'' fullchildtag2=''''+chdtag2Name+'' value="''+chdtag2Value+''"'' children = XML(''''''<root><''''''+fullchildtag1+'''''' /><''''''+fullchildtag2+''''''/></root> '''''') # Add parent parent.extend(children) dll_xml_doc = xml_declaration + tostring(root) dll_xml_doc = prettify_xml(dll_xml_doc) return dll_xml_doc except Exception , error: log.error("xml_generation_failed : %s" % error)