Ошибка пипса: нераспознанная опция командной строки '-fstack-protector-strong'
Когда я sudo pip install pyquery
, sudo pip install lxml
, а также sudo pip install cython
Я получаю очень похожий вывод с той же ошибкой, которая говорит:
x86_64-linux-gnu-gcc: error: unrecognized command line option ‘-fstack-protector-strong’
Вот полный вывод пипса для 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
Полный журнал из /root/.pip/pip.log находится здесь: http://pastebin.com/5R4VZDu8
Я смотрел на это, это, это и это для помощи, но я еще не смог решить проблему.
Я уже установил libxml2-dev, libxslt1-dev и python-dev. Я использую Debian 7.0 x64 на капле DigitalOcean.
Я просто пытаюсь установить pyquery. Может кто-нибудь помочь мне?
Спасибо
3 ответа
Я столкнулся с этой проблемой, когда попытался обновить версию своей панды до 0.15.2
Если вы устанавливаете gcc-4.9, скорее всего, в вашей системе все еще будет установлена более старая версия gcc (в моем случае gcc-4.7).
Я могу придумать 3 способа решения этой проблемы:
a) symlink / usr / bin / x86_64-linux-gnu-gcc в /usr/bin/x86_64-linux-gnu-gcc-4.9, если вы хотите быть более организованным об использовании альтернативных обновлений, см. https: // askubuntu.com / вопросы / 26498 / выбрать-НКУ-и-г-версии
б) выяснить, как вручную указать, какой пип компилятора использует, и установить его в каком-то файле.conf - я не изучал, где этот файл находится или есть варианты CLI для пипа, которые соответствуют этому. В принципе, создание / редактирование /usr/lib/pythonX.Y/distutils/distutils.cfg должно сделать это. Я столкнулся с проблемами, когда попытался использовать этот подход.
c) Отредактируйте /usr/lib/python2.7/plat-x86_64-linux-gnu/_sysconfigdata_nd.py, чтобы отразить ваш обновленный компилятор
Как использовать компилятор gcc MinGW при установке пакета Python с использованием Pip? https://docs.python.org/2/install/
Я пошел с быстрым и грязным решением (а), чтобы заставить все работать
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 . . .
вернуть вещи к тому, как они были
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
Одним из возможных решений будет использование GCC 4.9 или выше, который поддерживает -fstack-protector-strong
флаг.
Вместо обновления до GCC 4.9 я пытался найти, где был определен флаг, и удалить его. В Debian Wheezy я нашел его в /usr/lib/python2.7/plat-x86_64-linux-gnu/_sysconfigdata_nd.py, который принадлежит пакету libpython2.7-minimal. Мое решение состояло в том, чтобы заменить все вхождения -fstack-protector-strong на -fstack-protector в этом файле. Затем pip install выполнил правильную команду сборки.