Python LXML模塊死活安裝不了怎麼辦?
因為要學Scrapy框架來寫爬蟲,可是每次都是出現這個錯誤:
/private/tmp/pip_build_root/lxml/src/lxml/includes/etree_defs.h:14:10: fatal error: libxml/xmlversion.h file not found
#include "libxml/xmlversion.h"
^
1 error generated.
error: command /usr/bin/clang failed with exit status 1
----------------------------------------
Cleaning up...
Command /Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python -c "import setuptools, tokenize;__file__=/private/tmp/pip_build_root/lxml/setup.py;exec(compile(getattr(tokenize, open, open)(__file__).read().replace(
,
), __file__, exec))" install --record /tmp/pip-ABNSEN-record/install-record.txt --single-version-externally-managed --compile failed with error code 1 in /private/tmp/pip_build_root/lxmlStoring debug log for failure in /Users/CraxDc/.pip/pip.log
#include "libxml/xmlversion.h"
^
1 error generated.
error: command /usr/bin/clang failed with exit status 1
已經百度谷歌一個下午了,能找到的方法都試過了。Stackoverflow論壇的問題也看過了,都是解決不了。
剛從這個大坑裡爬出來:
1. 安裝wheel,命令行運行:
pip install wheel
2.在這裡下載對應的.whl文件,注意別改文件名! http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml
3. 進入.whl所在的文件夾,執行命令即可完成安裝
pip install 帶後綴的完整文件名
首先請確認安裝了xcode commond line tool 也就是xcode的命令行工具,因為編譯lxml需要用到cc 等命令所以先在命令行輸入
xcode-select --install
安裝完命令行工具 用pip來安裝你所需要的lxml
這時候如果提示頭文件未找到的話 用locate命令定位一下頭文件的位置locate xmlversion.h
初次使用locate命令會提示安裝
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
安裝一下就好了
之後定位到了locate之後 設置一下環境變數export C_INCLUDE_PATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/
那麼在編譯lxml的時候 就自動會到這個路徑下搜索頭文件
然後pip install 就可以啦。另外如果系統裝了幾個版本的xcode 那麼列印看好xcode的路徑sudo xcode-select -p
如果想切換到另一個xcode路徑下 可以考慮在bash.profile進行全局的設置
或者在終端設置變數sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer/
或者
export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer
cd /Library/Python/2.7/site-packages/
sudo rm -rf six*
如果是Mac OSX 10.11 有可能會報錯 因為mac系統多了sip 關閉sip就OK了
具體關閉方法請百度基本我就踩到了這些坑。新的OSX10.11.5, 安裝lxml庫,可以用下面的命令:1. 安裝brew:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
2. 安裝lxml:
brew install libxml2
brew install libxslt
brew link libxml2 --force
brew link libxslt --force
3. pip install lxml
4. pip install scrapy這問題沒那麼神秘吧,你要先安裝lxml2的c庫。這是安裝python實現的時候找不到它要封裝的c實現在哪裡。
ubuntu下直接 sudo apt-get install python-lxml就行了
補充一下 @深海魚 的答案。1.step 1我按照深海魚的答案去做之後,還是不行。cmd 運行 pip install filename.whl 還是報錯, 提示:
lxml-3.7.1-cp27-cp27m-win32.whl is not a supported wheel on this platform.
2.step 2
然後我跑去stackoverflow搜到了這個答案:filename.whl is not supported wheel on this platform然後一哥們回答他遇到過同樣的問題,然後升級 pip 完美解決。python -m pip install --upgrade pip
lxml-3.7.1-cp27-cp27m-win_amd64.whl
然後繼續從 step2 的 StackOverflow 的回答中找到了答案。有一哥們回答他遇到了一模一樣的問題,pip也升級了,但是還是報錯:
scipy-0.17.0-cp35-none-win_amd64.whl is not supported wheel on this platform
然後那哥們說:「realized that amd64 is not about my Windows, but about the Python version. Actually I am using a 32 bit Python on a 64 bit Windows. Installing the following file solved the issue(amd64跟系統無關,跟Python的版本有關係。雖然他的電腦是64位,但是他的Python版本是32位,於是他裝了32位的.whl 文件,然後成功了):
scipy-0.17.0-cp35-none-win32.whl
」
4. step 4於是我就按照他的做法,安裝32位的,果然成功。如下:D:spider&>pip install lxml-3.7.1-cp27-cp27m-win32.whl
Processing d:spiderlxml-3.7.1-cp27-cp27m-win32.whl
Installing collected packages: lxml
Successfully installed lxml-3.7.1
在mac 打開終端運行命令:xcode-select --install再重試
STATIC_DEPS=true sudo pip install lxml
試試這個?
所以說,不會c語言是萬萬不行的。提示這麼明顯了,缺少頭文件,那就去安裝lxml的dev版本,頭文件就有了
缺少頭文件,直接去下載lxml安裝版即可
https://pypi.python.org/pypi/lxml/2.3/
xcode-select --install10.11親測有效。
我就說一句,記得升級pip……
- xcode-select --install 已成功
是不是裝了Python3?
我用的是mac,也是死活裝不了,剛剛成功,辦法:裝的3.5.0版本的,最新的4.1.1.1版本是什麼方法都試了,就是裝不了。
在ubuntu14.04上面 ,我是多個版本共存,使用python3 通過pip安裝 lxml , python3 -m pip install lmx的時候,遇到相似的問題,使用sudo apt-get install python3.5-dev 解決問題