나는 dom으로 XML을 생성했으며, xml을 출력하기 위해 lxml을 사용하고자한다. 꽤 XML을파이썬 lxml with py2exe
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
내 출력은 XML 포맷해야 문자열을 출력하기위한
이 내 코드입니다.
stactoverflow의 일부 게시물에서이 코드가 있습니다. 이것은 완벽하게 위트 Python 자체를 컴파일 할 때 작동합니다. 내가 py2exe에에서 만든 바이너리 내 프로젝트를 변환 할 때 .I이 두 가지 문제가 있었다 (내 바이너리는 명명 된 파이프와 윈도우 서비스입니다) : 내 서비스가 시작되지 않았습니다
, 난
py2exe 함수에서. 그때 내 서비스가 제대로 시작되었습니다. XML 생성에서 여기라는includes
옵션에lxml.etree
을 추가하여이 문제를 해결, 나는 내 로그 내가이 오류를 해결 할
'module' object has no attribute 'fromstring'
에보고하고 오류인가? 그리고 내 첫 번째 문제의 해결책이 맞습니까?
내 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)
가져 오기를 메서드 정의 외부로 이동해도 여전히 발생합니까? 그리고 py2exe가 테스트중인 것과 동일한 python 버전을 사용하고 있습니까? –
함수 밖에서 가져 오기를 시도했습니다. 내 서비스가 지금 시작되지 않았습니다. 나는 내 코드를 – rakesh
@ michael-clerx 위에 놓을 수도있다. 나는 내 python 버전과 py2exe 버전을 chaecked했다. 둘 다 같은 유형이다. – rakesh