在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
这为我解决了,而不需要更多的内存