"error: command 'x86_64-linux-gnu-gcc' failed with exit status 1" in virtualenv
Asked Answered
K

9

26

Environment: Linux Mint 17 Cinnamon.

This error is displayed:

error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

when attempting the following in a virtualenv:

pip install lxml
pip install pillow
pip install pycrypto
pip install pymongo (fails but still shows in pip freeze)

There are several solutions here that recommend installing python2.7-dev:

Installing Pillow error: Setup script exited with error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

Installing lxml in virtualenv via pip install error: command 'x86_64-linux-gnu-gcc' failed

Pillow installation error: command 'gcc' failed with exit status 1

fatal error: Python.h: No such file or directory

I am confused by this recommendation however because it is my understanding that using something like:

sudo apt-get install python2.7-dev

would add this to the main *system* instance of Python, rather that the one in virtualenv. (see - https://unix.stackexchange.com/a/56392/92486)

Can I add python2.7-dev just to the virtualenv version of Python?

Key answered 25/11, 2014 at 15:12 Comment(1)
This should be moved to ServerFault ?Triolein
K
17

I installed python2.7-dev via Synaptic Package Manager in Linux Mint 17.

I could then accomplish the following in virtualenv:

pip install pillow
pip install pycrypto

And then I installed libxml2-dev and libxslt1-dev via Synaptic and could accomplish the following:

pip install lxml

I also did this so that the pymongo install didn't have any errors:

pip uninstall pymongo
pip install pymongo  # i defined the version i needed ie pip install pymongo==2.6.2

I'm still confused how this fixes the problem, because I thought virtualenv was an isolated environment. Any clarification about this appreciated.

Key answered 25/11, 2014 at 18:8 Comment(4)
This works for Ubuntu 14.10 as well! Thanks a ton @user1063287, you saved my day! :)Bricky
Glad to hear @DhruvSinghKey
From the docs: "virtualenv is a tool to create isolated Python environments." What they mean is isolated in terms of Python packages. C libraries, headers, build tools, etc. from the outside system are visible, even your Python binaries. It's not a virtual machine or a separate Python binary installation.Senhor
for 'pillow' you also need sudo apt-get install build-essential libjpeg-dev libzlib-devViola
C
20

Most of the time these are dependency-issues.

Following the stack-trace of the gcc compiler one can see the missing files. Sometimes installing the Python development packages is not enough.

For example: I tried to do pip install requests[security] in my virtualenv foo. This is the result that the pip-installer gave me.

Failed building wheel for cryptography
Running setup.py bdist_wheel for cffi
Stored in directory: /root/.cache/pip/wheels/99/e7/9a/68b1c8ca6f6f92b5feebd4d9434f50712b84f6a66d1285ea21
Successfully built cffi
Failed to build cryptography
Installing collected packages: cffi, cryptography, pyOpenSSL, ndg-httpsclient, requests
Running setup.py install for cryptography
Complete output from command /opt/foo/django-cms-virtualenv/bin/python -c "import setuptools, tokenize;__file__='/tmp/pip-build-eZaLAG/cryptography/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-BwgYTp-record/install-record.txt --single-version-externally-managed --compile --install-headers /opt/foo/django-cms-virtualenv/include/site/python2.7/cryptography:
running install
running build
running build_py
running egg_info
writing requirements to src/cryptography.egg-info/requires.txt
writing src/cryptography.egg-info/PKG-INFO
writing top-level names to src/cryptography.egg-info/top_level.txt
writing dependency_links to src/cryptography.egg-info/dependency_links.txt
writing entry points to src/cryptography.egg-info/entry_points.txt
warning: manifest_maker: standard file '-c' not found

reading manifest file 'src/cryptography.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
no previously-included directories found matching 'docs/_build'
warning: no previously-included files matching '*' found under directory 'vectors'
writing manifest file 'src/cryptography.egg-info/SOURCES.txt'
running build_ext
building '_Cryptography_cffi_a269d620xd5c405b7' extension
x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/python2.7 -c src/cryptography/hazmat/bindings/__pycache__/_Cryptography_cffi_a269d620xd5c405b7.c -o build/temp.linux-x86_64-2.7/src/cryptography/hazmat/bindings/__pycache__/_Cryptography_cffi_a269d620xd5c405b7.o
src/cryptography/hazmat/bindings/__pycache__/_Cryptography_cffi_a269d620xd5c405b7.c:217:25: fatal error: openssl/aes.h: Datei oder Verzeichnis nicht gefunden
 #include <openssl/aes.h>
                         ^
compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

The important part is the: #include <openssl/aes.h>

The compiler makes pretty clear that it is demanding this file - but it is not there in the filesystem.

Knowing that, the only thing left to do is: install the needed libraries!

  1. Find out which package is needed for your distribution: e.g. for Ubuntu you can go to The Ubuntu Package Search Site and enter the missing file you are looking for. In this case "aes.h"
  2. Install the needed packages using your distributions package management tool: e.g. for Ubuntu:

    aptitude install libssl-dev

  3. Retry with pip in your virtualenv:

    pip install requests[security]

Catechol answered 3/7, 2015 at 20:39 Comment(2)
Yes! install libssl-dev solved my issues when trying to install bpython an a fresh Ubuntu 14.04 box. Thanks a million!Dickerson
in my case the missing lib was libffi-devRouter
K
17

I installed python2.7-dev via Synaptic Package Manager in Linux Mint 17.

I could then accomplish the following in virtualenv:

pip install pillow
pip install pycrypto

And then I installed libxml2-dev and libxslt1-dev via Synaptic and could accomplish the following:

pip install lxml

I also did this so that the pymongo install didn't have any errors:

pip uninstall pymongo
pip install pymongo  # i defined the version i needed ie pip install pymongo==2.6.2

I'm still confused how this fixes the problem, because I thought virtualenv was an isolated environment. Any clarification about this appreciated.

Key answered 25/11, 2014 at 18:8 Comment(4)
This works for Ubuntu 14.10 as well! Thanks a ton @user1063287, you saved my day! :)Bricky
Glad to hear @DhruvSinghKey
From the docs: "virtualenv is a tool to create isolated Python environments." What they mean is isolated in terms of Python packages. C libraries, headers, build tools, etc. from the outside system are visible, even your Python binaries. It's not a virtual machine or a separate Python binary installation.Senhor
for 'pillow' you also need sudo apt-get install build-essential libjpeg-dev libzlib-devViola
M
5

Work for me :
Just install python2.7-dev first
sudo apt-get install python2.7-dev

Macilroy answered 27/4, 2015 at 11:25 Comment(1)
Worked for me also! So helpful xDEulalie
I
2

In Ubuntu 16.04.1 this worked for me:

sudo apt-get install libxml2-dev libxslt1-dev python-dev
Idona answered 31/10, 2016 at 16:6 Comment(0)
M
1

For me the installation of lxml was failing on compilation. I followed the instructions for installation of lxml and reduced the compiler optimizations:

sudo CFLAGS="-O0"  pip install lxml

After doing this, the compile of lxml succeeded.

Melancholy answered 14/6, 2015 at 7:11 Comment(0)
F
0

This can be a problem in the pip. To solve, try:

sudo apt-get remove python-pip

To install pip, securely download get-pip.py.

https://bootstrap.pypa.io/get-pip.py

sudo python get-pip.py

Fluorite answered 4/2, 2015 at 15:11 Comment(0)
D
0

The cffi library needs libffi-dev:

sudo apt-get install libffi libffi-dev
Danille answered 17/4, 2016 at 10:58 Comment(0)
J
0

Easiest way is:

sudo apt-get build-dep python-imaging

and then

pip install pillow
Jameson answered 21/4, 2016 at 9:8 Comment(0)
S
0

This works for me, 12.04, python2.7.6 for package lxml

sudo pip install libxml2 libxml2-dev libxslt1-dev
sudo pip install lxml
Seessel answered 12/6, 2016 at 10:20 Comment(1)
i think you meant sudo apt-get install instead of pip?Sweatt

© 2022 - 2024 — McMap. All rights reserved.