35

尝试在 Ubuntu 12.10 x64 中将“pip install lxml”运行到 virtualenv 中时出现以下错误。我有 Python 2.7。

我在这里看到了关于相同问题的其他相关问题,并尝试安装 python-dev、libxml2-dev 和 libxslt1-dev。

请查看从我提示命令到发生错误的那一刻的回溯。

下载/解压lxml
  为包 lxml 运行 setup.py egg_info
    /usr/lib/python2.7/distutils/dist.py:267:用户警告:未知的分发选项:'bugtrack_url'
      警告。警告(味精)
    构建 lxml 版本 3.1.2。
    没有 Cython 的建筑。
    使用 libxslt 1.1.26 的构建配置
    在以下目录中针对 libxml2/libxslt 构建:/usr/lib

    警告:在目录 'src/lxml/tests' 下找不到匹配 '*.txt' 的文件
安装收集的包:lxml
  为 lxml 运行 setup.py install
    /usr/lib/python2.7/distutils/dist.py:267:用户警告:未知的分发选项:'bugtrack_url'
      警告。警告(味精)
    构建 lxml 版本 3.1.2。
    没有 Cython 的建筑。
    使用 libxslt 1.1.26 的构建配置
    在以下目录中针对 libxml2/libxslt 构建:/usr/lib
    构建“lxml.etree”扩展
    gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/libxml2 -I/home/admin/.virtualenvs/dev.actualito.com/build /lxml/src/lxml/includes -I/usr/include/python2.7 -c src/lxml/lxml.etree.c -o build/temp.linux-x86_64-2.7/src/lxml/lxml.etree.o
    src/lxml/lxml.etree.c:在函数'__pyx_f_4lxml_5etree__getFilenameForFile'中:
    src/lxml/lxml.etree.c:26851:7:警告:变量 '__pyx_clineno' 已设置但未使用 [-Wunused-but-set-variable]
    src/lxml/lxml.etree.c:26850:15:警告:变量 '__pyx_filename' 已设置但未使用 [-Wunused-but-set-variable]
    src/lxml/lxml.etree.c:26849:7:警告:变量 '__pyx_lineno' 已设置但未使用 [-Wunused-but-set-variable]
    src/lxml/lxml.etree.c:在函数'__pyx_pf_4lxml_5etree_4XSLT_18__call__'中:
    src/lxml/lxml.etree.c:138273:81:警告:从不兼容的指针类型传递“__pyx_f_4lxml_5etree_12_XSLTContext__copy”的参数 1 [默认启用]
    src/lxml/lxml.etree.c:136229:52:注意:预期的“struct __pyx_obj_4lxml_5etree__XSLTContext *”,但参数的类型为“struct __pyx_obj_4lxml_5etree__BaseContext *”
    src/lxml/lxml.etree.c:在函数'__pyx_f_4lxml_5etree__copyXSLT'中:
    src/lxml/lxml.etree.c:139667:79:警告:从不兼容的指针类型传递“__pyx_f_4lxml_5etree_12_XSLTContext__copy”的参数 1 [默认启用]
    src/lxml/lxml.etree.c:136229:52:注意:预期的“struct __pyx_obj_4lxml_5etree__XSLTContext *”,但参数的类型为“struct __pyx_obj_4lxml_5etree__BaseContext *”
    src/lxml/lxml.etree.c:在顶层:
    src/lxml/lxml.etree.c:12384:13:警告:“__pyx_f_4lxml_5etree_displayNode”已定义但未使用 [-Wunused-function]
    gcc:内部编译器错误:被杀死(程序 cc1)
    请提交完整的错误报告,
    如果合适,使用预处理的源。
    有关说明,请参阅。
    错误:命令“gcc”失败,退出状态为 4
    命令的完整输出 /home/admin/.virtualenvs/dev.actualito.com/bin/python -c "import setuptools;__file__='/home/admin/.virtualenvs/dev.actualito.com/build/lxml/setup. py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-asDtN5-记录/安装-record.txt --single-version-externally-managed --install-headers /home/admin/.virtualenvs/dev.actualito.com/include/site/python2.7:
    /usr/lib/python2.7/distutils/dist.py:267:用户警告:未知的分发选项:'bugtrack_url'

  警告。警告(味精)

构建 lxml 版本 3.1.2。

没有 Cython 的建筑。

使用 libxslt 1.1.26 的构建配置

在以下目录中针对 libxml2/libxslt 构建:/usr/lib

运行安装

运行构建

运行 build_py

复制 src/lxml/includes/lxml-version.h -> build/lib.linux-x86_64-2.7/lxml/includes

运行 build_ext

构建“lxml.etree”扩展

gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/libxml2 -I/home/admin/.virtualenvs/dev.actualito.com/build /lxml/src/lxml/includes -I/usr/include/python2.7 -c src/lxml/lxml.etree.c -o build/temp.linux-x86_64-2.7/src/lxml/lxml.etree.o

src/lxml/lxml.etree.c:在函数'__pyx_f_4lxml_5etree__getFilenameForFile'中:

src/lxml/lxml.etree.c:26851:7:警告:变量 '__pyx_clineno' 已设置但未使用 [-Wunused-but-set-variable]

src/lxml/lxml.etree.c:26850:15:警告:变量 '__pyx_filename' 已设置但未使用 [-Wunused-but-set-variable]

src/lxml/lxml.etree.c:26849:7:警告:变量 '__pyx_lineno' 已设置但未使用 [-Wunused-but-set-variable]

src/lxml/lxml.etree.c:在函数'__pyx_pf_4lxml_5etree_4XSLT_18__call__'中:

src/lxml/lxml.etree.c:138273:81:警告:从不兼容的指针类型传递“__pyx_f_4lxml_5etree_12_XSLTContext__copy”的参数 1 [默认启用]

src/lxml/lxml.etree.c:136229:52:注意:预期的“struct __pyx_obj_4lxml_5etree__XSLTContext *”,但参数的类型为“struct __pyx_obj_4lxml_5etree__BaseContext *”

src/lxml/lxml.etree.c:在函数'__pyx_f_4lxml_5etree__copyXSLT'中:

src/lxml/lxml.etree.c:139667:79:警告:从不兼容的指针类型传递“__pyx_f_4lxml_5etree_12_XSLTContext__copy”的参数 1 [默认启用]

src/lxml/lxml.etree.c:136229:52:注意:预期的“struct __pyx_obj_4lxml_5etree__XSLTContext *”,但参数的类型为“struct __pyx_obj_4lxml_5etree__BaseContext *”

src/lxml/lxml.etree.c:在顶层:

src/lxml/lxml.etree.c:12384:13:警告:“__pyx_f_4lxml_5etree_displayNode”已定义但未使用 [-Wunused-function]

gcc:内部编译器错误:被杀死(程序 cc1)

请提交完整的错误报告,

如果合适,使用预处理的源。

有关说明,请参阅。

错误:命令“gcc”失败,退出状态为 4

--------------------------------------
命令 /home/admin/.virtualenvs/dev.actualito.com/bin/python -c "import setuptools;__file__='/home/admin/.virtualenvs/dev.actualito.com/build/lxml/setup.py'; exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-asDtN5-record/install -record.txt --single-version-externally-managed --install-headers /home/admin/.virtualenvs/dev.actualito.com/include/site/python2.7 失败,错误代码 1 在 /home/admin/ .virtualenvs/dev.actualito.com/build/lxml
在 /home/admin/.pip/pip.log 中存储完整的日志
4

7 回答 7

73

确保您有足够的内存。尝试dmesg | tail查看它是否输出如下内容:

...
[3778136.277570] Out of memory: Kill process 21267 (cc1) score 557 or sacrifice child
[3778136.277587] Killed process 21267 (cc1) total-vm:365836kB, anon-rss:336228kB, file-rss:0kB
于 2013-06-14T13:59:35.450 回答
25

这是我保存的笔记。

sudo apt-get install libxml2
sudo apt-get install libxslt1.1
sudo apt-get install libxml2-dev
sudo apt-get install libxslt1-dev
sudo apt-get install python-libxml2
sudo apt-get install python-libxslt1
sudo apt-get install python-dev
sudo apt-get install python-setuptools

easy_install lxml

它适用于我的 ubuntu 12.10

于 2013-04-22T15:14:33.433 回答
18

根据 lxml 站点,您可以使用这样的构造:

CFLAGS="-O0"  pip install lxml

安装指南

全局安装的注意事项:使用 sudo 传递环境变量的正确方法是after sudo

sudo CFLAGS="-O0" pip install lxml
于 2014-04-07T12:20:17.937 回答
8

今天早上我遇到了类似的问题(错误:命令'gcc'失败,退出状态为4)。看来您需要检查机器的内存。如果内存低于512M,可能是这个原因。尝试暂时关闭一些服务,如apache服务器,然后再次尝试“pip install lxml”。它可能会工作!

于 2014-07-03T07:21:58.290 回答
3

我曾多次遇到过这个问题。

简短的回答

Python2: $ python2.7 setup.py clean build --with-cython install
Python3: $ pip-3.3 install lxml

长答案

假设是pip install lxml,无论您使用的是 Python2 还是 Python3,它都应该适用于所有环境。

Cython需要考虑:由于相关的性能提升,您肯定会喜欢lxml编译。Cython

由于我不知道的原因,Python2 上的编译找不到 Cython。为了更准确和绝对明确地说明这个问题,下面的两个命令都不使用 Cython:

# DO NOT use these commands. I repeat: DO NOT use these commands.
$ pip-2.7 install lxml
$ easy_install-2.7 install lxml

因此,据我所知,在使用 Python2 时,您只有一种选择,那就是:从源代码编译,Luke!

# install build environment and dependencies
$ kernel_release=$( uname -r )
$ sudo apt-get install linux-headers-${kernel_release} build-essential -y
$ sudo apt-get install libxml2-dev libxslt1-dev -y

# Download from github and compile from sources
$ git clone --branch lxml-3.2.4 https://github.com/lxml/lxml
$ python2.7 setup.py clean build --with-cython install
于 2013-11-25T17:12:00.800 回答
2

对于 ubuntu 12.04 和虚拟环境:

sudo apt-get install libxml2-dev libxslt-dev
workon some-virt-env
pip install lxml
于 2015-08-15T11:48:20.283 回答
2

尝试通过设置 FLAGS 环境变量来禁用 C 编译器优化

CFLAGS="-O0"  pip install lxml 

这解决了我,而不需要更多的内存

于 2016-03-15T17:37:42.413 回答