<p>不能直接将不同的Python版本或本机库符号链接起来,因为Python DLL格式在主要Python版本之间会发生变化。</p>
<p>基于此:</p>
<p>“from lxml import etree”raise“importterror:/home/se7en/.virtualenvs/e-py25/lib/python2.5/site-packages/lxml-2.2.4-py2.5-linux-i686.egg/lxml/etree.so:未定义的符号:PyUnicodeUCS2}decodelating1</p>
<p>它清楚地指出,lxml是根据错误的Python版本编译的。通常,这个错误源于您将手动编译的Python解释器与Ubuntu的默认解释器混合使用的问题,因为Python解释器可以使用不同的unicode标志进行编译,Ubuntu使用非默认标志(如果我没记错的话)。</p>
<p>通常我通过</p>
<ul>
<li><p>创建新的virtualenv</p></li>
<li><p>使用easy_install在此virtualenv下重新安装lxml</p></li>
<li><p>使用-v开关运行Python,Python将打印它试图导入的所有内容</p></li>
<li><p>如果它仍然从错误的位置导入内容,则virtualenv或您的本机库设置已损坏</p></li>
<li><p>可以使用手动lib builds和LD_library_PATH环境变量覆盖本机库设置</p></li>
<li><p>如果virtualenv没有根据正确的Python版本构建lxml,那么它就是virtualenv bug(只要您能够演示如何以可重复的方式重现它)。但是,我们已经成功地将lxml与Ubuntu、virtualenv和各种Python版本一起使用,所以我怀疑是否存在bug。</p></li>
</ul>
<p>还有一种方法可以使用名为buildout的工具(有点像virtualenv,但要复杂得多)进行静态lxml安装:</p>
<p><a href="http://groups.google.com/group/gomobile-dev/browse_thread/thread/7f5e34e991cfdaa9/c65b70e7a9422ebf?#c65b70e7a9422ebf" rel="nofollow">http://groups.google.com/group/gomobile-dev/browse_thread/thread/7f5e34e991cfdaa9/c65b70e7a9422ebf?#c65b70e7a9422ebf</a></p>