lxml installation error ubuntu 14.04 (internal compiler error)
Solution 1
In this particular case, it has nothing to do with dependencies, it's a memory problem.
I had this problem within a virtualbox VM. My solution was to increase memory allocated to the VM from the default 512Mb to 1024Mb.
Solution 2
Possible solution (if you have no ability to increase memory on that machine) is to add swap file.
sudo dd if=/dev/zero of=/swapfile bs=1024 count=524288
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
from https://github.com/pydata/pandas/issues/1880#issuecomment-9920484
This worked for me on smallest digital ocean machine
Solution 3
Refer to https://stackoverflow.com/a/6504860/261718
Go install some dev packages before pip install lxml
apt-get install libxml2-dev libxslt1-dev python-dev
Solution 4
Using digitalocean smallest machine you can just turn off mysql and apache while compiling using
sudo service apache2 stop
sudo service mysql stop
and after installing lxml turn them on again using this commands with 'start' instead of 'stop'. Works pretty well for me without using swap file
Solution 5
If @Drake answer does not work for you try adding lib1g-dev
.
$ sudo apt-get install -y libxml2-dev libxslt1-dev zlib1g-dev
salmanwahed
Python, Django, Flask, BeautifulSoup, REST, Pandas, Numpy, Android, Java. Trying to learn more.
Updated on July 05, 2022Comments
-
salmanwahed almost 2 years
I am having problems with installing
lxml
. I have tried the solutions of the relative questions in this site and other sites but could not fix the problem. Need some suggestions/solution on this.I am providing the full log after executing
pip install lxml
,Downloading/unpacking lxml Downloading lxml-3.3.5.tar.gz (3.5MB): 3.5MB downloaded Running setup.py (path:/tmp/pip_build_root/lxml/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.3.5. Building without Cython. Using build configuration of libxslt 1.1.28 warning: no previously-included files found matching '*.py' 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.3.5. Building without Cython. Using build configuration of libxslt 1.1.28 building 'lxml.etree' extension x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/libxml2 -I/tmp/pip_build_root/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 -w x86_64-linux-gnu-gcc: internal compiler error: Killed (program cc1) Please submit a full bug report, with preprocessed source if appropriate. See <file:///usr/share/doc/gcc-4.8/README.Bugs> for instructions. error: command 'x86_64-linux-gnu-gcc' failed with exit status 4 Complete output from 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-KUq9VD-record/install-record.txt --single-version-externally-managed --compile: /usr/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'bugtrack_url' warnings.warn(msg) Building lxml version 3.3.5. Building without Cython. Using build configuration of libxslt 1.1.28 running install running build running build_py creating build creating build/lib.linux-x86_64-2.7 creating build/lib.linux-x86_64-2.7/lxml copying src/lxml/pyclasslookup.py -> build/lib.linux-x86_64-2.7/lxml copying src/lxml/doctestcompare.py -> build/lib.linux-x86_64-2.7/lxml copying src/lxml/builder.py -> build/lib.linux-x86_64-2.7/lxml copying src/lxml/cssselect.py -> build/lib.linux-x86_64-2.7/lxml copying src/lxml/sax.py -> build/lib.linux-x86_64-2.7/lxml copying src/lxml/_elementpath.py -> build/lib.linux-x86_64-2.7/lxml copying src/lxml/ElementInclude.py -> build/lib.linux-x86_64-2.7/lxml copying src/lxml/__init__.py -> build/lib.linux-x86_64-2.7/lxml copying src/lxml/usedoctest.py -> build/lib.linux-x86_64-2.7/lxml creating build/lib.linux-x86_64-2.7/lxml/includes copying src/lxml/includes/__init__.py -> build/lib.linux-x86_64-2.7/lxml/includes creating build/lib.linux-x86_64-2.7/lxml/html copying src/lxml/html/html5parser.py -> build/lib.linux-x86_64-2.7/lxml/html copying src/lxml/html/ElementSoup.py -> build/lib.linux-x86_64-2.7/lxml/html copying src/lxml/html/builder.py -> build/lib.linux-x86_64-2.7/lxml/html copying src/lxml/html/clean.py -> build/lib.linux-x86_64-2.7/lxml/html copying src/lxml/html/_diffcommand.py -> build/lib.linux-x86_64-2.7/lxml/html copying src/lxml/html/diff.py -> build/lib.linux-x86_64-2.7/lxml/html copying src/lxml/html/_html5builder.py -> build/lib.linux-x86_64-2.7/lxml/html copying src/lxml/html/_setmixin.py -> build/lib.linux-x86_64-2.7/lxml/html copying src/lxml/html/defs.py -> build/lib.linux-x86_64-2.7/lxml/html copying src/lxml/html/formfill.py -> build/lib.linux-x86_64-2.7/lxml/html copying src/lxml/html/soupparser.py -> build/lib.linux-x86_64-2.7/lxml/html copying src/lxml/html/__init__.py -> build/lib.linux-x86_64-2.7/lxml/html copying src/lxml/html/usedoctest.py -> build/lib.linux-x86_64-2.7/lxml/html creating build/lib.linux-x86_64-2.7/lxml/isoschematron copying src/lxml/isoschematron/__init__.py -> build/lib.linux-x86_64-2.7/lxml/isoschematron copying src/lxml/lxml.etree.h -> build/lib.linux-x86_64-2.7/lxml copying src/lxml/lxml.etree_api.h -> build/lib.linux-x86_64-2.7/lxml copying src/lxml/includes/config.pxd -> build/lib.linux-x86_64-2.7/lxml/includes copying src/lxml/includes/xpath.pxd -> build/lib.linux-x86_64-2.7/lxml/includes copying src/lxml/includes/tree.pxd -> build/lib.linux-x86_64-2.7/lxml/includes copying src/lxml/includes/dtdvalid.pxd -> build/lib.linux-x86_64-2.7/lxml/includes copying src/lxml/includes/xmlparser.pxd -> build/lib.linux-x86_64-2.7/lxml/includes copying src/lxml/includes/etreepublic.pxd -> build/lib.linux-x86_64-2.7/lxml/includes copying src/lxml/includes/xslt.pxd -> build/lib.linux-x86_64-2.7/lxml/includes copying src/lxml/includes/schematron.pxd -> build/lib.linux-x86_64-2.7/lxml/includes copying src/lxml/includes/uri.pxd -> build/lib.linux-x86_64-2.7/lxml/includes copying src/lxml/includes/c14n.pxd -> build/lib.linux-x86_64-2.7/lxml/includes copying src/lxml/includes/xinclude.pxd -> build/lib.linux-x86_64-2.7/lxml/includes copying src/lxml/includes/xmlschema.pxd -> build/lib.linux-x86_64-2.7/lxml/includes copying src/lxml/includes/xmlerror.pxd -> build/lib.linux-x86_64-2.7/lxml/includes copying src/lxml/includes/relaxng.pxd -> build/lib.linux-x86_64-2.7/lxml/includes copying src/lxml/includes/htmlparser.pxd -> build/lib.linux-x86_64-2.7/lxml/includes copying src/lxml/includes/etree_defs.h -> build/lib.linux-x86_64-2.7/lxml/includes copying src/lxml/includes/lxml-version.h -> build/lib.linux-x86_64-2.7/lxml/includes creating build/lib.linux-x86_64-2.7/lxml/isoschematron/resources creating build/lib.linux-x86_64-2.7/lxml/isoschematron/resources/rng copying src/lxml/isoschematron/resources/rng/iso-schematron.rng -> build/lib.linux-x86_64-2.7/lxml/isoschematron/resources/rng creating build/lib.linux-x86_64-2.7/lxml/isoschematron/resources/xsl copying src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl -> build/lib.linux-x86_64-2.7/lxml/isoschematron/resources/xsl copying src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl -> build/lib.linux-x86_64-2.7/lxml/isoschematron/resources/xsl creating build/lib.linux-x86_64-2.7/lxml/isoschematron/resources/xsl/iso-schematron-xslt1 copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_skeleton_for_xslt1.xsl -> build/lib.linux-x86_64-2.7/lxml/isoschematron/resources/xsl/iso-schematron-xslt1 copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_dsdl_include.xsl -> build/lib.linux-x86_64-2.7/lxml/isoschematron/resources/xsl/iso-schematron-xslt1 copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_message.xsl -> build/lib.linux-x86_64-2.7/lxml/isoschematron/resources/xsl/iso-schematron-xslt1 copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_svrl_for_xslt1.xsl -> build/lib.linux-x86_64-2.7/lxml/isoschematron/resources/xsl/iso-schematron-xslt1 copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_abstract_expand.xsl -> build/lib.linux-x86_64-2.7/lxml/isoschematron/resources/xsl/iso-schematron-xslt1 copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/readme.txt -> build/lib.linux-x86_64-2.7/lxml/isoschematron/resources/xsl/iso-schematron-xslt1 running build_ext building 'lxml.etree' extension creating build/temp.linux-x86_64-2.7 creating build/temp.linux-x86_64-2.7/src creating build/temp.linux-x86_64-2.7/src/lxml x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/libxml2 -I/tmp/pip_build_root/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 -w x86_64-linux-gnu-gcc: internal compiler error: Killed (program cc1) Please submit a full bug report, with preprocessed source if appropriate. See <file:///usr/share/doc/gcc-4.8/README.Bugs> for instructions. error: command 'x86_64-linux-gnu-gcc' failed with exit status 4 ---------------------------------------- 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-KUq9VD-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
Also, the
pip.log
file looks like this,status = self.run(options, args) File "/usr/lib/python2.7/dist-packages/pip/commands/install.py", line 283, in run requirement_set.install(install_options, global_options, root=options.root_path) File "/usr/lib/python2.7/dist-packages/pip/req.py", line 1435, in install requirement.install(install_options, global_options, *args, **kwargs) File "/usr/lib/python2.7/dist-packages/pip/req.py", line 706, in install cwd=self.source_dir, filter_stdout=self._filter_install, show_stdout=False) File "/usr/lib/python2.7/dist-packages/pip/util.py", line 697, in call_subprocess % (command_desc, proc.returncode, cwd)) InstallationError: 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-KUq9VD-record/install-record.txt --single-version-externally-managed --compile failed with error code 1 in /tmp/pip_build_root/lxml
dmesg | tail
command shows output like this,[1744367.676147] Out of memory: Kill process 25518 (cc1) score 388 or sacrifice child [1744367.676665] Killed process 25518 (cc1) total-vm:242352kB, anon-rss:200608kB, file-rss:0kB
It's seems like a memory issue. I am taking reference form this question
-
salmanwahed over 9 yearsThanks for sharing your solution.
-
Carles Barrobés over 9 yearsThis is the right answer to a different issue, which is missing OS-level dependencies. That is not the problem salman has.
-
jamstooks over 9 yearsThanks, this worked for me too... On another note, this feels like a huge RED FLAG that this library requires so much memory just to compile! That's insane. Makes me glad I only use xml for this particular project.
-
Aaron Ash over 8 yearsYou might want to turn off the swap after you're done:
sudo swapoff /swapfile
-
Abhi over 8 yearsLife saver mate ... Thanks a ton
-
0x78 over 8 yearsAh thank you. I too had this issue on the small digital ocean machine.
-
Pranjal Mittal about 8 yearsI faced exactly the same problem on the smallest digitalocean machine while installing lxml and adding the swap file solved the problem. Thank you!
-
psychok7 almost 8 yearsworks nicely. but how can i revert this back when i actually get enough memory in my vm?
-
Michael Plakhov almost 8 years@psychok7 as specified by Aaron Ash you can just turn swap off with
sudo swapoff /swapfile
and delete this swapfile like any other file. -
Albert Català almost 8 yearsThanks for your solution, that's it!!! two days looking for a solution. Translation into Catalan: "Si pogués et donaria un petó!!! porto dos dies intentant sol·luconar-ho"
-
Albert Català almost 8 yearsThanks to your comment "digitalocean" I found the solution
-
Raven about 6 yearsHow on earth can it take more than 512 mb ram to compile a library! that is just sick