web-dev-qa-db-fra.com

"erreur: la commande 'x86_64-linux-gnu-gcc' a échoué avec le statut de sortie 1" dans virtualenv

Environnement: Linux Mint 17 Cinnamon. 

Cette erreur est affichée:

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

lors de la tentative suivante dans une virtualenv:

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

Plusieurs solutions recommandent d’installer python2.7-dev:

Erreur d'installation de l'oreiller: le script d'installation s'est terminé avec l'erreur suivante: la commande 'x86_64-linux-gnu-gcc' a échoué avec le statut de sortie 1

L'installation de lxml dans virtualenv via l'erreur d'installation du pip: commande "x86_64-linux-gnu-gcc" a échoué

Erreur d'installation de l'oreiller: la commande 'gcc' a échoué avec l'état de sortie 1

Erreur fatale: Python.h: Aucun fichier ou répertoire de ce type

Cette recommandation me laisse toutefois perplexe, car je crois comprendre que l’utilisation de quelque chose comme:

Sudo apt-get install python2.7-dev

cela ajouterait cela à l'instance * système * principale de Python, plutôt qu'à celle de virtualenv. (voir - https://unix.stackexchange.com/a/56392/92486 )

Puis-je ajouter python2.7-dev uniquement à la version virtualenv de Python? 

25
user1063287

J'ai installé python2.7-dev via le gestionnaire de paquets Synaptic dans Linux Mint 17. 

Je pourrais alors accomplir les tâches suivantes dans virtualenv:

pip install pillow
pip install pycrypto

Et ensuite, j'ai installé libxml2-dev et libxslt1-dev via Synaptic et je pouvais accomplir les tâches suivantes:

pip install lxml

J'ai également fait cela pour que l'installation de pymongo ne contienne aucune erreur:

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

Je ne comprends toujours pas comment cela résout le problème, car je pensais que virtualenv était un environnement isolé. Toute clarification à ce sujet apprécié. 

16
user1063287

La plupart du temps, il s'agit de problèmes de dépendance.

Après la trace de pile du compilateur gcc, vous pouvez voir les fichiers manquants. Parfois, l’installation des packages de développement Python ne suffit pas.

Par exemple: J'ai essayé de faire pip install requests[security] dans mon virtualenv foo. C'est le résultat que l'installateur m'a donné.

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

La partie importante est le: #include <openssl/aes.h>

Le compilateur a clairement indiqué qu'il exigeait ce fichier - mais ce n'est pas là dans le système de fichiers.

Sachant cela, la seule chose à faire est: installez les bibliothèques nécessaires!

  1. Découvrez quel paquet est nécessaire pour votre distribution: P. Ex. pour Ubuntu, vous pouvez aller sur Le site de recherche de paquets Ubuntu et entrer le fichier manquant que vous recherchez. Dans ce cas, "aes.h"
  2. Installez les packages nécessaires à l’aide de votre outil de gestion de packages de distributions: Ex. pour Ubuntu:

    aptitude install libssl-dev

  3. Réessayez avec pip dans votre virtualenv:

    pip install requests[security]

19
Thorsten Südbrock

Travaille pour moi :
Installez d’abord python2.7-dev 
Sudo apt-get install python2.7-dev

5
GrvTyagi

Dans Ubuntu 16.04.1, cela fonctionnait pour moi:

Sudo apt-get install libxml2-dev libxslt1-dev python-dev
2
flurix8

Pour moi, l'installation de lxml a échoué lors de la compilation. J'ai suivi les instructions pour l'installation de lxml et réduit les optimisations du compilateur:

Sudo CFLAGS="-O0"  pip install lxml

Après cela, la compilation de lxml a réussi.

1
Patrick Collins

La bibliothèque cffi a besoin de libffi-dev:

Sudo apt-get install libffi libffi-dev
0
Moh

Cela fonctionne pour moi, 12.04, python2.7.6 pour package lxml

Sudo pip install libxml2 libxml2-dev libxslt1-dev
Sudo pip install lxml
0
Jesse Yan

Cela peut être un problème dans le pip. Pour résoudre, essayez:

Sudo apt-get supprimer python-pip

Pour installer pip, téléchargez en toute sécurité get-pip.py.

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

Sudo python get-pip.py

0
Gilmar Soares

Le moyen le plus simple est:

Sudo apt-get build-dep python-imaging

et alors

pip install pillow
0
jatin