在virtualenv中使用pip安装lxml Ubuntu 12.10错误:命令'gcc'失败,退出状态为4

在尝试在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:UserWarning:Unknown distribution option:'bugtrack_url'
       warnings.warn(MSG)
    构buildlxml版本3.1.2。
    没有Cython的build筑。
    使用libxslt 1.1.26的构buildconfiguration
    在以下目录中针对libxml2 / libxslt构build:/ usr / lib

    警告:在目录“src / lxml / tests”下找不到与'* .txt'匹配的文件
安装收集的软件包:lxml
  为lxml运行setup.py install
     /usr/lib/python2.7/distutils/dist.py:267:UserWarning:Unknown distribution option:'bugtrack_url'
       warnings.warn(MSG)
    构buildlxml版本3.1.2。
    没有Cython的build筑。
    使用libxslt 1.1.26的构buildconfiguration
    在以下目录中针对libxml2 / libxslt构build:/ usr / lib
    构build“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:warning:variables'__pyx_clineno'设置但未使用[-Wunused-but-set-variable]
     src / lxml / lxml.etree.c:26850:15:warning:variables'__pyx_filename'设置但未使用[-Wunused-but-set-variable]
     src / lxml / lxml.etree.c:26849:7:warning:variables'__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:warning:从不兼容指针types[默认情况下启用]传递'__pyx_f_4lxml_5etree_12_XSLTContext__copy'的参数1
     src / lxml / lxml.etree.c:136229:52:note:expected'struct __pyx_obj_4lxml_5etree__XSLTContext *'but argument is of type'struct __pyx_obj_4lxml_5etree__BaseContext *'
     src / lxml / lxml.etree.c:在函数'__pyx_f_4lxml_5etree__copyXSLT'中:
     src / lxml / lxml.etree.c:139667:79:警告:从不兼容的指针types[默认情况下启用]传递'__pyx_f_4lxml_5etree_12_XSLTContext__copy'的参数1
     src / lxml / lxml.etree.c:136229:52:note:expected'struct __pyx_obj_4lxml_5etree__XSLTContext *'but argument is of type'struct __pyx_obj_4lxml_5etree__BaseContext *'
     src / lxml / lxml.etree.c:顶层:
     src / lxml / lxml.etree.c:12384:13:warning:'__pyx_f_4lxml_5etree_displayNode'已定义但未使用[-Wunused-function]
     gcc:内部编译错误:杀死(程序cc1)
    请提交完整的错误报告,
    如果合适的话预处理源代码。
    请参阅说明。
    错误:命令'gcc'失败,退出状态4
    从命令/home/admin/.virtualenvs/dev.actualito.com/bin/python -c“inputsetuptools; __ 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-external-managed --install-headers /home/admin/.virtualenvs/dev.actualito.com/include/site/python2.7:
     /usr/lib/python2.7/distutils/dist.py:267:UserWarning:Unknown distribution option:'bugtrack_url'

   warnings.warn(MSG)

构buildlxml版本3.1.2。

没有Cython的build筑。

使用libxslt 1.1.26的构buildconfiguration

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

运行安装

运行构build

运行build_py

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

运行build_ext

构build“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:warning:variables'__pyx_clineno'设置但未使用[-Wunused-but-set-variable]

 src / lxml / lxml.etree.c:26850:15:warning:variables'__pyx_filename'设置但未使用[-Wunused-but-set-variable]

 src / lxml / lxml.etree.c:26849:7:warning:variables'__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:warning:从不兼容指针types[默认情况下启用]传递'__pyx_f_4lxml_5etree_12_XSLTContext__copy'的参数1

 src / lxml / lxml.etree.c:136229:52:note:expected'struct __pyx_obj_4lxml_5etree__XSLTContext *'but argument is of type'struct __pyx_obj_4lxml_5etree__BaseContext *'

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

 src / lxml / lxml.etree.c:139667:79:警告:从不兼容指针types[默认情况下启用]传递'__pyx_f_4lxml_5etree_12_XSLTContext__copy'的参数1

 src / lxml / lxml.etree.c:136229:52:note:expected'struct __pyx_obj_4lxml_5etree__XSLTContext *'but argument is of type'struct __pyx_obj_4lxml_5etree__BaseContext *'

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

 src / lxml / lxml.etree.c:12384:13:warning:'__pyx_f_4lxml_5etree_displayNode'已定义但未使用[-Wunused-function]

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

请提交完整的错误报告,

如果合适的话预处理源代码。

请参阅说明。

错误:命令'gcc'失败,退出状态4

 ----------------------------------------
 / 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-external-managed --install-headers /home/admin/.virtualenvs/dev.actualito.com/include/site/python2.7失败,错误代码1在/ home / admin / .virtualenvs / dev.actualito.com /编译/ LXML
将完整的日志存储在/home/admin/.pip/pip.log

这是我保存的笔记。

 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

确保你有足够的内存。 尝试dmesg | tail 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 

根据lxml网站,你可以使用这样的build设:

 CFLAGS="-O0" pip install lxml 

安装指南

注意全局安装: sudo环境variables的正确传递方式是 sudo 之后

 sudo CFLAGS="-O0" pip install lxml 

我今天早上遇到了类似的问题(error:command'gcc'failed,退出状态4)。 看来你需要检查你的机器的内存。 如果内存低于512M,可能是原因。暂时closures一些服务,如apache服务器,再次尝试“pip install lxml”。

我偶然发现了这个麻烦。

简短的回答

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

长答案

假设是, pip install lxml应该可以在任何环境下工作,无论你使用的是Python2还是Python3。

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

由于我未知的原因,Python2上的编译没有findCython。 为了更精确和明确地说明这个问题,下面的两个命令都不使用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的时候,你只有一个select,就我所知,它是从源代码编译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 

对于Ubuntu 12.04和虚拟环境:

 sudo apt-get install libxml2-dev libxslt-dev workon some-virt-env pip install lxml 

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

 CFLAGS="-O0" pip install lxml 

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