国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

在virtualenv中安裝libxml2和libxslt

2019-11-14 17:07:34
字體:
供稿:網(wǎng)友

在使用python的工作中,需要使用到libxml2和libxslt庫。原來在實(shí)際環(huán)境中已經(jīng)安裝完成了,但是在virtualenv中還沒有,現(xiàn)在正在整理virtualenv的環(huán)境。下面把在virtualenv環(huán)境的安裝步驟記錄下來,方便大家參考。

1.正常環(huán)境安裝

在正常python環(huán)境中安裝這兩個庫的方法比較簡單,直接下載源碼包,編譯安裝即可
具體安裝步驟:
1、解壓:$tar zxvf libxml2-2.7.2.tar.gz
2、進(jìn)入解壓后的安裝目錄:$cd libxml2-2.7.2
3、安裝三部曲:1)$./configure
2)$make
3)$cd python
3)$python setup.py install
安裝完畢。
非常的簡單。

2.virtualenv環(huán)境安裝

下面的方法就是在在虛擬環(huán)境中安裝。
方法其實(shí)是大同小異,只是細(xì)微的差異。

2.1環(huán)境信息

環(huán)境信息:

2.3安裝libxml2

先安裝libxml2,解壓。
激活虛擬環(huán)境,然后在激活的的虛擬環(huán)境中操作。

cd libxml2-2.7.2/./configure --with-python=~/path/to/your/virtual/env/bin/pythonmakecd python/python setup.py install

libxml2在make之前,需要對Makefile做一些修改,詳細(xì)見后面的安裝過程中的問題。

cd libxslt-1.1.22/./configure --with-python=~/path/to/your/virtual/env/bin/pythonmakecd python/sudo make install

第三步:安裝完成驗(yàn)證

在虛擬環(huán)境中,輸入python

Python 2.7.6 (default, Mar 22 2014, 22:59:56) [GCC 4.8.2] on linux2Type "help", "copyright", "credits" or "license" for more information.>>> import libxml2>>> import libxslt>>> 

如果沒有報錯,說明安裝成功。

3.安裝過程問題匯總

3.1 libxslt編譯依賴libxml2庫出錯:

/usr/bin/ld: /usr/local/lib/libxml2.a(entities.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC/usr/local/lib/libxml2.a: error adding symbols: Bad value

當(dāng)時覺得奇怪,libxml2庫已經(jīng)安裝好了,現(xiàn)在安裝libxslt庫,怎么報這個錯誤,在網(wǎng)上搜索下了錯誤信息,找到了這個文章(
http://blog.csdn.net/zangcf/article/details/21607855),說編譯的時候沒有加-fPIC參數(shù)。
就搜索了下這個參數(shù)的作用,-fPIC則表明使用地址無關(guān)代碼。PIC:Position Independent Code.
覺得libxslt編譯不過,是這個問題引起的,然后修改了libxml的編譯參數(shù),重新編譯安裝libxml,然后在編譯libxslt,順利通過。

解決方法:
在libxml的Makefile的下面的位置添加-fPIC參數(shù)。

CFLAGS = -g -O2 -pedantic -W -Wformat -Wunused -Wimplicit -Wreturn-type -Wswitch -Wcomment -Wtrigraphs -Wformat -Wchar-subscripts -Wunin     itialized -Wparentheses -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Waggregate-return -Wstrict-prototypes -Wmissing-prototype     s -Wnested-externs -Winline -Wredundant-decls -fPIC

-fPIC的說明參考:Linux共享對象之編譯參數(shù)fPIC

4.一點(diǎn)疑問和想法

4.1 模塊的版本號

安裝完成后,在virtualenv的環(huán)境中查看安裝是否成功,使用pip freeze命令來查看,能看到libxml2的版本號為libxml2-python==2.7.2,無法看到libxslt的版本號。env/lib/python2.7/site-packages的文件夾中,看到了libxml的egg信息,沒有l(wèi)ibxslt的egg信息。

我的個人猜想是:
libxml2庫是通過python setup.py方式安裝的,生成了完整的egg-info信息;而libxslt包是make install安裝的,直接把對應(yīng)的文件復(fù)制到了site-packages的目錄下,沒有生成egg-info信息。嘗試著按照libxml的egg-info文件名稱建立了一個文件
touch libxslt_python-1.1.22-py2.7.egg-info

然后在執(zhí)行pip freeze命令,發(fā)現(xiàn)可以顯示出libxslt的版本號信息了。同時觀察了其他幾個顯示版本號的包,都有對應(yīng)的egg信息。pip命令應(yīng)該是通過egg-info來管理包的。

4.2 動態(tài)庫的調(diào)用

libxml2和libxslt都是c語言完成,加了python的適配,在site-packages的文件夾中,有.a .so以及對應(yīng)名稱的.py文件,打開python文件查看,是python調(diào)用了對應(yīng)的文件來實(shí)現(xiàn)的,充分發(fā)揮了Python的膠水特性。后續(xù)在需要的時候深入了解下python如何調(diào)用動態(tài)庫的函數(shù)。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 中阳县| 内丘县| 屏山县| 大荔县| 疏勒县| 安顺市| 章丘市| 太仓市| 池州市| 翼城县| 五指山市| 马鞍山市| 洛川县| 彭泽县| 柘城县| 德化县| 陇西县| 鄂托克前旗| 东丽区| 库尔勒市| 莫力| 罗甸县| 奉新县| 方山县| 平江县| 涡阳县| 安化县| 大姚县| 赞皇县| 昌宁县| 孟连| 南京市| 德安县| 遂川县| 金门县| 手机| 郯城县| 沂源县| 新龙县| 呼玛县| 柯坪县|