web-dev-qa-db-fra.com

erreur pip: option de ligne de commande non reconnue ‘-fstack-protector-strong’

Quand je Sudo pip install pyquery, Sudo pip install lxml, et Sudo pip install cython, J'obtiens une sortie très similaire avec la même erreur qui dit:

x86_64-linux-gnu-gcc: error: unrecognized command line option ‘-fstack-protector-strong’

Voici la sortie pip complète pour Sudo pip install pyquery:

Requirement already satisfied (use --upgrade to upgrade): pyquery in /usr/local/lib/python2.7/dist-packages
Downloading/unpacking lxml>=2.1 (from pyquery)
  Running 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.4.1.
    Building without Cython.
    Using build configuration of libxslt 1.1.28

Requirement already satisfied (use --upgrade to upgrade): cssselect in /usr/local/lib/python2.7/dist-packages/cssselect-0.9.1-py2.7.Egg (from pyquery)
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.4.1.
    Building without Cython.
    Using build configuration of libxslt 1.1.28
    building 'lxml.etree' extension
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/libxml2 -I/root/build/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: error: unrecognized command line option ‘-fstack-protector-strong’
    error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
    Complete output from command /usr/bin/python -c "import setuptools;__file__='/root/build/lxml/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --single-version-externally-managed --record /tmp/pip-gg4SuG-record/install-record.txt:
    /usr/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'bugtrack_url'

  warnings.warn(msg)

Building lxml version 3.4.1.

Building without Cython.

Using build configuration of libxslt 1.1.28

running install

running build

running build_py

copying src/lxml/includes/lxml-version.h -> build/lib.linux-x86_64-2.7/lxml/includes

running build_ext

building 'lxml.etree' extension

x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/libxml2 -I/root/build/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: error: unrecognized command line option ‘-fstack-protector-strong’

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

----------------------------------------
Command /usr/bin/python -c "import setuptools;__file__='/root/build/lxml/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --single-version-externally-managed --record /tmp/pip-gg4SuG-record/install-record.txt failed with error code 1 in /root/build/lxml
Storing complete log in /root/.pip/pip.log

Le journal complet de /root/.pip/pip.log est ici: http://Pastebin.com/5R4VZDu8

J'ai regardé this , this , this , et this pour obtenir de l'aide, mais je n'ai pas été capable de résoudre le problème pour le moment.

J'ai déjà installé libxml2-dev, libxslt1-dev et python-dev . J'exécute Debian 7.0 x64 sur une droplet DigitalOcean .

J'essaie juste d'installer pyquery. Quelqu'un peut-il m'aider?

Merci

13
cooltoast

J'ai rencontré ce problème lorsque j'ai tenté de mettre à niveau ma version pandas à 0.15.2

Si vous installez gcc-4.9, vous aurez probablement une version plus ancienne de gcc sur votre système (gcc-4.7 dans mon cas).

Je peux penser à 3 façons de résoudre ce problème:

a) lien symbolique/usr/bin/x86_64-linux-gnu-gcc vers /usr/bin/x86_64-linux-gnu-gcc-4.9 si vous souhaitez être plus organisé sur cette mise à jour d'utilisation -alternatives , voir https: //askubuntu.com/questions/26498/choose-gcc-and-g-version

b) comprendre comment spécifier manuellement quel compilateur pip utilise et le définir dans une sorte de fichier .conf - Je n'ai pas examiné où se trouve ce fichier ou s'il existe des options CLI pour pip qui accomplissent l'équivalent. En principe, la création/modification d'un fichier /usr/lib/pythonX.Y/distutils/distutils.cfg devrait le faire. J'ai rencontré des problèmes lorsque j'ai essayé d'utiliser cette approche.

c) Modifiez /usr/lib/python2.7/plat-x86_64-linux-gnu/_sysconfigdata_nd.py pour refléter votre compilateur mis à jour

Comment utiliser le compilateur gcc de MinGW lors de l'installation de Python utilisant Pip?https: //docs.python.org/2/install/# distutils-configuration-files

Je suis allé avec la solution rapide et sale (a) pour tout forcer au travail

root@localhost:/home/user1$ rm /usr/bin/x86_64-linux-gnu-gcc
root@localhost:/home/user1$ ln -s /usr/bin/gcc-4.9 /usr/bin/x86_64-linux-gnu-gcc
root@localhost:/home/user1$ pip install pandas --upgrade
. . .  pandas compiles with gcc-4.9 here . . . 

ramener les choses à la façon dont elles étaient

root@localhost:/home/user1$ rm /usr/bin/x86_64-linux-gnu-gcc
root@localhost:/home/user1$ ln -s /usr/bin/gcc-4.7 /usr/bin/x86_64-linux-gnu-gcc
23
meyerson

Une solution possible serait d'utiliser GCC 4.9 ou supérieur, qui prend en charge le -fstack-protector-strong drapeau.

3
Sjoerd

Au lieu de passer à GCC 4.9, j'essayais de trouver où l'indicateur était défini et de le supprimer. Sur Debian Wheezy, je l'ai trouvé dans /usr/lib/python2.7/plat-x86_64-linux-gnu/_sysconfigdata_nd.py qui appartient au paquet libpython2.7-minimal. Ma solution était de remplacer toutes les occurrences de -fstack-protector-strong par -fstack-protector dans ce fichier. Ensuite, pip install a exécuté la commande de construction correcte.

3
user323094