lxml installation error ubuntu 14.04 (internal compiler error)

28,988

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

Share:
28,988
salmanwahed
Author by

salmanwahed

Python, Django, Flask, BeautifulSoup, REST, Pandas, Numpy, Android, Java. Trying to learn more.

Updated on July 05, 2022

Comments

  • salmanwahed
    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
    salmanwahed over 9 years
    Thanks for sharing your solution.
  • Carles Barrobés
    Carles Barrobés over 9 years
    This is the right answer to a different issue, which is missing OS-level dependencies. That is not the problem salman has.
  • jamstooks
    jamstooks over 9 years
    Thanks, 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
    Aaron Ash over 8 years
    You might want to turn off the swap after you're done: sudo swapoff /swapfile
  • Abhi
    Abhi over 8 years
    Life saver mate ... Thanks a ton
  • 0x78
    0x78 over 8 years
    Ah thank you. I too had this issue on the small digital ocean machine.
  • Pranjal Mittal
    Pranjal Mittal about 8 years
    I faced exactly the same problem on the smallest digitalocean machine while installing lxml and adding the swap file solved the problem. Thank you!
  • psychok7
    psychok7 almost 8 years
    works nicely. but how can i revert this back when i actually get enough memory in my vm?
  • Michael Plakhov
    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à
    Albert Català almost 8 years
    Thanks 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à
    Albert Català almost 8 years
    Thanks to your comment "digitalocean" I found the solution
  • Raven
    Raven about 6 years
    How on earth can it take more than 512 mb ram to compile a library! that is just sick