Can';t在python2.7中安装lxml
我正在尝试使用Can';t在python2.7中安装lxml,python,python-2.7,lxml,linux-mint,Python,Python 2.7,Lxml,Linux Mint,我正在尝试使用sudo-pip-install-lxml和sudo-pip-install在virtualenv中安装lxml——升级lxml,但在这两种情况下都会得到以下结果: x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-z, relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes
sudo-pip-install-lxml
和sudo-pip-install在virtualenv中安装lxml——升级lxml
,但在这两种情况下都会得到以下结果:
x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-z,
relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes
-D_FORTIFY_SOURCE=2 -g -fstack-protector --param=ssp-buffer-size=4 -Wformat
-Werror=format-security build/temp.linux-x86_64-2.7/src/lxml/lxml.etree.o -lxslt
-lexslt -lxml2 -lz -lm -o build/lib.linux-x86_64-2.7/lxml/etree.so
/usr/bin/ld: cannot find -lz
collect2: error: ld returned 1 exit status
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
----------------------------------------
Cleaning up...
Command /usr/bin/python -c "import setuptools,
tokenize;__file__='/tmp/pip_build_root/lxml/setup.py';
exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'),
__file__, 'exec'))" install --record /tmp/pip-nmFOYf-record/install-record.txt
--single-version-externally-managed --compile failed with error code 1 in
/tmp/pip_build_root/lxml
Storing debug log for failure in /root/.pip/pip.log
我已经尝试了所有发布的解决方案,这意味着我已经安装了libxml2 dev
、libxslt dev
和python dev
,并且还安装了build-essential
我目前运行的是基于Linux Mint 17 Debian的,它使用
apt get
作为包管理器。python lxml
已经预安装。lxml
取决于各种C库,您必须安装这些C库,包括它们的开发文件(头文件,.so
或.a
库等),才能构建lxml
。这些文档解释了您需要在特定平台上构建哪些先决条件
此错误:
/usr/bin/ld: cannot find -lz
…意味着您缺少的先决条件是libz
,即zlib
由于您不在Windows上,您实际上根本不可能没有zlib
,但很可能您没有zlib
的开发文件。在某些平台上,尤其是在许多linux发行版上,软件包通常被分成不同的部分。例如,运行时需要的zlib
部分可能位于名为zlib
的包中,而构建需要zlib
的其他程序所需的部分位于名为zlib dev
或zlib devel
的包中。具体细节取决于您的具体平台
也就是说,如果您没有zlib
开发文件,那么您可能也没有libxml2
或libxslt
开发文件,因为我不知道有哪个平台在安装这些文件时不会同时拉入zlib
文件
无论如何,由于您没有告诉我们您是哪一个平台(如果是linux的话,还包括发行版),我不知道要使用什么包管理器,包的名称等等,但是请做适合您平台的事情
此外: 我已经安装了
python lxml
您真的不应该使用发行版的软件包管理器和pip
安装相同的软件包;这是一个很好的迷惑你自己的方法
但无论如何,您很可能是从二进制软件包安装的
pythonlxml
,而不是从源代码安装的,这意味着您不需要构建需求。现在,您正试图从源代码构建它,这意味着您可以这样做。在基于ubuntu的linux发行版上,您可以使用:
sudo-apt-get-install-zlib1g-dev
为什么要在virtualenv中使用sudo
?您是否将virtualenv创建为root用户?若然,原因为何?或者,即使您在virtualenv中,您是否仍在尝试将其安装到系统站点软件包中?如果是这样的话,为什么不从virtualenv之外进行呢?@abarnert好吧,我第一次在没有sudo的情况下进行安装,然后我尝试在全局范围内安装lxml,但没有成功。只是随机混合使用virtualenv和全局安装(有和没有sudo),只会导致权限错误的virtualenv崩溃。不要这样做。仅供参考,您不需要编辑标题来表示“已解决”。只需标记一个可接受的答案(您已经这样做)就足够了。此外,在将来,对于与安装相关的问题,请在您的问题中添加有关您平台的信息,最好是作为标签。如果您一开始就有Linux Mint标签,我可以告诉您sudo apt get install zlib1g dev
,而不是试图抽象地解释您需要使用平台的安装程序来安装平台的zlib开发包。感谢您的早期回答,我之所以尝试同时使用pip和package manager(即apt get
)进行安装,是因为第一个(pip)对我不起作用,所以我尝试安装python lxml
,但它是预安装的。在我试图安装lxml
之前,我也安装了libxml2
和libxslt
@helado:但是你是否安装了libxml2 dev
和libxslt dev
,正如安装文档和这个答案所解释的那样?如果你的意思是sudo apt获得安装libxml2 dev libxslt dev
,正如文档所说的那样,是的,我就是这样做的。我第一次在Debian上遇到这个错误。。。谢谢你的帮助!我也面临同样的问题。这个命令解决了这个问题。感谢@helado和kguest。