Installing lxml with pip in virtualenv Ubuntu 12.10 error: command 'gcc' failed with exit status 4

匿名 (未验证) 提交于 2019-12-03 02:31:01

问题:

I'm having the following error when trying to run "pip install lxml" into a virtualenv in Ubuntu 12.10 x64. I have Python 2.7.

I have seen other related questions here about the same problem and tried installing python-dev, libxml2-dev and libxslt1-dev.

Please take a look of the traceback from the moment I tip the command to the moment when the error occurs.

 Downloading/unpacking lxml   Running setup.py egg_info for package lxml     /usr/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'bugtrack_url'       warnings.warn(msg)     Building lxml version 3.1.2.     Building without Cython.     Using build configuration of libxslt 1.1.26     Building against libxml2/libxslt in the following directory: /usr/lib      warning: no files found matching '*.txt' under directory 'src/lxml/tests' Installing collected packages: lxml   Running setup.py install for lxml     /usr/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'bugtrack_url'       warnings.warn(msg)     Building lxml version 3.1.2.     Building without Cython.     Using build configuration of libxslt 1.1.26     Building against libxml2/libxslt in the following directory: /usr/lib     building 'lxml.etree' extension     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: In function '__pyx_f_4lxml_5etree__getFilenameForFile':     src/lxml/lxml.etree.c:26851:7: warning: variable '__pyx_clineno' set but not used [-Wunused-but-set-variable]     src/lxml/lxml.etree.c:26850:15: warning: variable '__pyx_filename' set but not used [-Wunused-but-set-variable]     src/lxml/lxml.etree.c:26849:7: warning: variable '__pyx_lineno' set but not used [-Wunused-but-set-variable]     src/lxml/lxml.etree.c: In function '__pyx_pf_4lxml_5etree_4XSLT_18__call__':     src/lxml/lxml.etree.c:138273:81: warning: passing argument 1 of '__pyx_f_4lxml_5etree_12_XSLTContext__copy' from incompatible pointer type [enabled by default]     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: In function '__pyx_f_4lxml_5etree__copyXSLT':     src/lxml/lxml.etree.c:139667:79: warning: passing argument 1 of '__pyx_f_4lxml_5etree_12_XSLTContext__copy' from incompatible pointer type [enabled by default]     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: At top level:     src/lxml/lxml.etree.c:12384:13: warning: '__pyx_f_4lxml_5etree_displayNode' defined but not used [-Wunused-function]     gcc: internal compiler error: Killed (program cc1)     Please submit a full bug report,     with preprocessed source if appropriate.     See  for instructions.     error: command 'gcc' failed with exit status 4     Complete output from command /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:     /usr/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'bugtrack_url'    warnings.warn(msg)  Building lxml version 3.1.2.  Building without Cython.  Using build configuration of libxslt 1.1.26  Building against libxml2/libxslt in the following directory: /usr/lib  running install  running build  running build_py  copying src/lxml/includes/lxml-version.h -> build/lib.linux-x86_64-2.7/lxml/includes  running build_ext  building 'lxml.etree' extension  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: In function '__pyx_f_4lxml_5etree__getFilenameForFile':  src/lxml/lxml.etree.c:26851:7: warning: variable '__pyx_clineno' set but not used [-Wunused-but-set-variable]  src/lxml/lxml.etree.c:26850:15: warning: variable '__pyx_filename' set but not used [-Wunused-but-set-variable]  src/lxml/lxml.etree.c:26849:7: warning: variable '__pyx_lineno' set but not used [-Wunused-but-set-variable]  src/lxml/lxml.etree.c: In function '__pyx_pf_4lxml_5etree_4XSLT_18__call__':  src/lxml/lxml.etree.c:138273:81: warning: passing argument 1 of '__pyx_f_4lxml_5etree_12_XSLTContext__copy' from incompatible pointer type [enabled by default]  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: In function '__pyx_f_4lxml_5etree__copyXSLT':  src/lxml/lxml.etree.c:139667:79: warning: passing argument 1 of '__pyx_f_4lxml_5etree_12_XSLTContext__copy' from incompatible pointer type [enabled by default]  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: At top level:  src/lxml/lxml.etree.c:12384:13: warning: '__pyx_f_4lxml_5etree_displayNode' defined but not used [-Wunused-function]  gcc: internal compiler error: Killed (program cc1)  Please submit a full bug report,  with preprocessed source if appropriate.  See  for instructions.  error: command 'gcc' failed with exit status 4  ---------------------------------------- Command /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 failed with error code 1 in /home/admin/.virtualenvs/dev.actualito.com/build/lxml Storing complete log in /home/admin/.pip/pip.log 

回答1:

Here is the my saved note.

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 

It has worked for my ubuntu 12.10



回答2:

Make sure you have enough memory. Try dmesg | tail to see if it outputs something like:

... [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 


回答3:

According to lxml site you could use such construction:

CFLAGS="-O0"  pip install lxml 

installation guide

Note for those installing globally: The proper way to pass environment variables with sudo is after sudo:

sudo CFLAGS="-O0" pip install lxml 


回答4:

I met the similar question(error: command 'gcc' failed with exit status 4) this morning. It seems you need check your machine's memory. If the memory is lower than 512M,that may be the cause.Try to close some services temporarily,like apache server,and try "pip install lxml" again.It maybe work!



回答5:

I've stumbled with this trouble a couple of times.

Short answer

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

Long answer

The hypothesis is that pip install lxml should work in every environment, regardless if you are using Python2 or Python3.

There's also Cython to be considered: You will certainly enjoy lxml compiled with Cython due to relevant performance gains.

For reasons unknown to me, the compilation on Python2 does not find Cython. To be more precise and absolutely explicit about this matter, both commands below DO NOT employ Cython:

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

So, when using Python2 you have only one alternative, as far as I know, which is: compile from sources, 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 


回答6:

For ubuntu 12.04 and virtual env:

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


回答7:

Try to disable the C compiler optimizations by setting the FLAGS environment variable

CFLAGS="-O0"  pip install lxml  

That solves for me without the need of more RAM



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!