我正在尝试使用 sudo pip install lxml
和 sudo pip install --upgrade lxml
在 virtualenv 中安装 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
我已经尝试了所有已发布的解决方案 here ,这意味着我安装了 libxml2-dev
、libxslt-dev
和 python-dev
并且我还安装了 build-essential
我目前正在运行 Linux Mint 17 Debian Based,它使用 apt-get
作为包管理器。
python-lxml
已经预装。
最佳答案
lxml
依赖于各种 C 库,您必须安装这些 C 库——包括它们的开发文件(头文件、.so
或 .a
库等)— 构建 lxml
。 installation文档解释了在特定平台上构建所需的先决条件。
这个错误:
/usr/bin/ld: cannot find -lz
... 意味着您缺少的先决条件是 libz
,又名 zlib
。
因为你不是在 Windows 上,所以你实际上根本没有 zlib
的可能性非常小......但是很可能你没有 zlib< 的开发文件
。在某些平台上,尤其是许多 Linux 发行版,包通常被分成单独的部分。例如,运行时需要的 zlib
部分可能在名为 zlib
的包中,而构建其他需要 zlib
的程序所需的部分在名为 zlib-dev
或 zlib-devel
的包中。具体细节取决于您的具体平台。
也就是说,如果您没有zlib
开发文件,您可能没有libxml2
或libxslt
开发文件文件,因为我不知道在哪个平台上安装这些文件也不会引入 zlib
文件。
无论如何,由于您没有告诉我们您是哪个平台(如果是 Linux,则为发行版),我不知道要使用哪个包管理器,包的名称等等,但是适合您的平台的任何内容。
还有:
I already have
python-lxml
installed
您真的不应该同时使用发行版的包管理器和 pip
安装相同的包;这是迷惑自己的好方法。
但无论如何,您很可能是从二进制包而不是源代码安装 python-lxml
,这意味着您不需要构建要求。现在您正在尝试从源代码构建它,这意味着您可以做到。
关于python - 无法在python2.7中安装lxml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26372210/