我现在有两个unix系统,一个用于服务,另一个用于构建(具有所有要构建的环境,但它是旧的)。我需要在服务机器中使用python中的lxml。以下命令我想:如何在Unix/Linux系统中创建lxml的静态构建?
python setup.py build --static-deps
或
CFLAGS="-g -O2 -fPIC"
python setup.py build --static-deps
但结果是:
ld: fatal: relocations remain against allocatable but non-writable sections
collect2: ld returned 1 exit status
error: command '/usr/lib/python2.6/pycc' failed with exit status 1
我想知道我怎样才能使一个静电积聚,这样我可以很容易地部署到我的服务箱?
另外,如果我
python setup.py build
它没有错误,但如果我:
Python 2.6.4 (r264:75706, Apr 17 2011, 11:24:50) [C] on sunos5
Type "help", "copyright", "credits" or "license" for more information.
>>> from lxml import etree
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: ld.so.1: isapython2.6: fatal: relocation error: file /usr/lib/python2.6/site-packages/lxml/etree.so: symbol __xmlStructuredErrorContext: referenced symbol not found
我搜索它:get errors when import lxml.etree to python 似乎并不有一个很好的答案。我认为这是链接问题,所以我认为它静态链接应该是一个更好的解决方案。
但我的主要目标是减少在部署中花费的工作,所以我会接受任何简单的方法。
请大家帮忙。提前致谢。
首先,您是否拥有完全相同的Python版本并在两台机器上构建?其次,你是否有依赖关系的静态库('libxml2.a','libxslt.a','libz.a',或者它需要的东西)? – abarnert 2014-10-20 21:56:45
我认为是蟒蛇版本。第二个问题是什么意思?我有这些库的.so库,否则,'python setup.py build'不会通过,对吧?根据doc,'python setup.py build --static-deps'将会下载最新的libxml2和libxslt,它就是这样。 – HuStmpHrrr 2014-10-20 23:00:51
如果你构建了一个与'.so'链接的东西,它将在运行时需要'.so'。这可能是你的问题。 – abarnert 2014-10-20 23:10:31