私のサーバーはApache2 + WSGI上に構築されたCentOS 6.8でPython 2.7.8を使用しています。私のアプリケーションでは、http POSTで受け取った日付を処理し、ローカル.xmlファイルから取得したXMLテンプレートに基づいて命令を作成する必要があります。最後に、xml命令を200 OK応答で送り返す必要があります。アプリケーションのロジックは、[OK]を作業と私は私の更新されたXMLツリーを見ることができるようです。Python lxml etree.tostring()はmod_wsgiで空の文字列を返します
print etree.tostring(root, pretty_print=True, xml_declaration-True, encoding='UTF-8')
問題は、私は同じ操作を行っているが、割り当てしようとしている私のコードの次の行で起こっているように見えます変数への出力:
xml_body = etree.tostring(root, pretty_print=True, xml_declaration-True, encoding='UTF-8')
印刷xml_body
出力は、このように私のアプリケーションは、Apacheのに戻って何も返さない、空の文字列です。
私の環境情報は役に立つかもしれ:
==For bug report ===
Python : sys.version_info(major=2, minor=7, micro=8, releaselevel='final', serial=0)
lxml.etree : (3, 6, 4, 0)
libxml used : (2, 7, 6)
libxml compiled : (2, 9, 4)
libxslt used : (1, 1, 26)
libxslt compiled : (1, 1, 29)
それはしかし、著者はそれがすべてでは動作しません言及したこのbug reportに似ています。同様の問題を含むもう1つのrequestがありますが、それでも解決されません。 私は成功したPythonのCLIで同じシナリオをプレイするかもしれませんチェックアウトしました:
Python 2.7.8 (default, May 15 2016, 12:46:09)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-16)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from lxml import etree
>>> foo = etree.Element('foo')
>>> foo
<Element foo at 0x7f5097c4fc20>
>>> foo.tag
'foo'
>>> foo.text = 'barrisimo'
>>> xmlb = etree.tostring(foo, pretty_print=True, xml_declaration=True, encoding='UTF-8')
>>> print xmlb
<?xml version='1.0' encoding='UTF-8'?>
<foo>barrisimo</foo>1
は、誰かがこれまでと同じ問題に遭遇したことがありますか?私は行き詰まっており、何か助けやアイデア、役に立つリンクがあれば感謝しています。
'mod_wsgi'の' tostring() 'には問題があるようですが、それでも解決策はありません。 – furas
コードスニペットを実際の内容に修正できますか?それは有効なPythonでさえありません。 '' xml_body = print etree.tostring(...) ''のように '' print''を使った結果を変数に代入することはできません。 –
lxmlが元々コンパイルされていたものより古いバージョンのlibxmlとlibxsltを使用していることについて、リンク先のアドバイスに耳を傾けましたか?あなたのケースは、そのシナリオとまったく同じように見え、前述のように問題を引き起こす可能性があります。ライブラリのシステムパッケージをアップグレードしたことを確認しましたか? –