Python module install

(一). 關於 lxml

lxml官方吹牛說它是Python中功能最全、最易用的XML和HTML的解析器。 html

  • easy_install 安裝:

wget https://bootstrap.pypa.io/ez_setup.py -O - | python

參考:https://pypi.python.org/pypi/setuptools python

  • 不建議採用apt安裝pip和easy,命令以下:
sudo apt-get install python-setuptools python-pip
  • lxml安裝(ubuntu 15.04下,根據python版本選擇對應的lxml):
sudo apt-get install python2.7-lxml python3-lxml

參考:http://lxml.de/installation.html linux

  • 安裝完lxml以後,就能夠輕鬆安裝 pyquery等等一系列xml文檔解析類模塊:
easy_install pyquery
  • 下面是悲慘史:

若是直接使用pip或者easy_install安裝,可能會出現一系列錯誤,例如: git

  1. src/lxml/lxml.etree.c:8:22: fatal error: pyconfig.h: No such file or directory
  2. Exception: Command "./configure --disable-dependency-tracking --disable-shar
  3. error: command 'x86_64-linux-gnu-gcc' failed with exit status 4

SF問答中通常的解決方法是: github

sudo apt-get install libxml2 libxslt1.1 libxml2-dev libxslt1-dev python-libxml2 python-libxslt1 python-dev python-setuptools libxslt-dev zlib1g-dev
easy_install lxml || pip install lxml

但我試過以後無一成功(多是系統及環境不一樣)… sql

總結了一下失敗的緣由,主要是如下依賴包未安裝,或者系統swap不夠所致: shell

yum install libxslt-devel libxml2-devel libxsltl libxml python-dev

但其實直接用apt-get安裝lxml的時候發現它僅僅依賴於:libxml二、libxslt1.1bootstrap

況且這仍是官方推薦的安裝方法。。所以遇到問題,找官網比先擺渡好。 ubuntu

參考:pip install lxml errorInstalling lxml with pip... python2.7


(二). pymssql安裝

模塊pymssql安裝依賴於freetds,這確實是一個敗筆,也是python對SQLServer支持如此之差的一個重要緣由。

安裝過程同上面的lxml同樣跌宕起伏,主要緣由出在freetds上。參考國外某大神的博文後解決:

Troubleshooting pymssql installation on Ubuntu,過程以下:

easy_install pymssql

若是上面這條命令執行成功了,那麼能夠跳過下文……

不然,請先下載pymssql源碼:

wget -q https://github.com/pymssql/pymssql/archive/master.zip
unzip -q master.zip
cd master
sudo python setup.py install

若是出現錯誤提示:Error: _mssql.c:8:22: fatal error: pyconfig.h: No such file or directory

sudo apt-get install python-dev

若是還報錯: Error: _mssql.c:314:22: fatal error: sqlfront.h: No such file or directory

sudo apt-get install freetds-dev

而後再安裝setup.py 就OK了!

事實證實本案的關鍵在於:Python和 freeTDS 的開發包是否安裝。

最後,只能用一句做者的原話來表達個人心情:

Installing pymssql on Ubuntu 13.10 was not an easy task.

深表贊成。與本人的經歷一模一樣。


(三). 一點吐槽

Python跨平臺相比Java跨平臺的一大劣勢是,不少py模塊依賴或綁定部分linux下的C-Lib包,

譬如上文所述的libxml、libxslt以及freetds,expect之於Pexpect 等等;

雖然Java中也有很多Native實現,但基本上跨平臺兼容性都比較好。

相關文章
相關標籤/搜索