我現在有兩個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