(Powerpoint 파일을 만들 때) Google App Engine에서 pptx-python을 사용하려고합니다. 나는 이미지가 필요 없기 때문에 필로우에 대한 의존성을 주석 처리했다. 버전 문제가있는 것을 제외하고는 거의 효과가있는 것으로 남았습니다. GAE의 lxml 버전은 2.3이고, 분명히 SubElement 메소드가 버전 2.3.2에 추가되었습니다.objectify에 Polyfill이 필요합니다 .SubElement
pptx 코드가 lxml 호출을 멋지게 랩핑하므로 응용 프로그램 수준에서 SubElement를 다시 작성하여이 문제를 해결할 수 있습니다. 불행히도, 나는 정말로 그 일을하는 첫 번째 단서가 없습니다. 그리고 lxml 코드는 C로 쓰여진 무언가를 둘러싸고있는 파이썬 래퍼처럼 보입니다. 그래서 며칠을 보내서 lxml에 익숙해지기 전에, 여러분 중 한 분이 나를 도울 수 있기를 바랍니다.
가 가def SubElement(parent, nsptag_str, **extra):
"""
Return an lxml element having *nsptag_str*, newly added as a direct child
of *parent*. The new element is appended to the sequence of children, so
this method is not suitable if the child element must be inserted at a
different position in the sequence. The class of the returned element is
the custom element class for its tag, if one is defined. Additional
named parameters defined on lxml ``makeelement()`` are accepted, such as
attrib=attr_dct and e.g. ``visible='1'``.
"""
nsptag = NamespacePrefixedTag(nsptag_str)
return objectify.SubElement(
parent, nsptag.clark_name, nsmap=nsptag.nsmap, **extra
)
가
사람이 어떻게 대신 objectify.SubElement에 의존하지 않도록 해당 기능을 다시 작성하는 방법을 말해 줄래하는 유일한 방법을 사용
이
는 PPTX/oxml/shared.py의 코드입니다 lxml 2.3에서 사용 가능합니까?
더 편리 할 경우를 대비하여 SubElement()를 재 작성했습니다. – scanny
그 코드를 추가하고 cleanup_namespaces = True를 넘긴 장소를 변경하여 lxml.etree.cleanupnamespaces :''etree.cleanup_namespaces (txBody) objectify.deannotate (txBody) #, cleanup_namespaces = True)''및 그 트릭을 했어! –