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: 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?
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é.
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!
Installez les packages nécessaires à l’aide de votre outil de gestion de packages de distributions: Ex. pour Ubuntu:
aptitude install libssl-dev
Réessayez avec pip dans votre virtualenv:
pip install requests[security]
Travaille pour moi :
Installez d’abord python2.7-dev Sudo apt-get install python2.7-dev
Dans Ubuntu 16.04.1, cela fonctionnait pour moi:
Sudo apt-get install libxml2-dev libxslt1-dev python-dev
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.
La bibliothèque cffi
a besoin de libffi-dev
:
Sudo apt-get install libffi libffi-dev
Cela fonctionne pour moi, 12.04, python2.7.6 pour package lxml
Sudo pip install libxml2 libxml2-dev libxslt1-dev
Sudo pip install lxml
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
Le moyen le plus simple est:
Sudo apt-get build-dep python-imaging
et alors
pip install pillow