web-dev-qa-db-ja.com

pipエラー:認識されないコマンドラインオプション ‘-fstack-protector-strong’

Sudo pip install pyquerySudo pip install lxml、およびSudo pip install cythonを実行すると、非常によく似た出力が得られますが、同じエラーが表示されます。

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

これがSudo pip install pyqueryの完全なpip出力です。

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

ヘルプのために thisthisthis 、および this を見てきましたが、まだ問題を解決することができます。

libxml2-dev、libxslt1-dev、およびpython-dev をすでにインストールしています。 DigitalOceanドロップレットで Debian 7.0 x64 を実行しています。

私はpyqueryをインストールしようとしています。誰かが私を助けてくれますか?

ありがとう

13
cooltoast

pandasバージョンを0.15.2にアップグレードしようとしたときにこの問題に遭遇しました

Gcc-4.9をインストールすると、システムに古いバージョンのgcc(私の場合はgcc-4.7)が残っている可能性があります。

この問題を解決する3つの方法を考えることができます。

a)シンボリックリンク/ usr/bin/x86_64-linux-gnu-gccから/usr/bin/x86_64-linux-gnu-gcc-4.9この使用についてより詳細に整理したい場合update -alternativeshttps://askubuntu.com/questions/26498/choose-gcc-and-g-version を参照

b)pipが使用するコンパイラーを手動で指定し、ある種の.confファイルに設定する方法を理解します-このファイルがどこにあるか、または同等の機能を実現するpipのCLIオプションがあるかどうかは調べていません。原則として、/ usr/lib/pythonX.Y/distutils/distutils.cfgを作成/編集することで実行できます。このアプローチを使用しようとしたときに問題が発生しました。

c)/usr/lib/python2.7/plat-x86_64-linux-gnu/_sysconfigdata_nd.pyを編集して、更新したコンパイラを反映させます

インストール時にMinGWのgccコンパイラを使用する方法Pythonパッケージ?https://docs.python.org/2/install/#distutils-設定ファイル

私はすべてを強制的に動作させるために、迅速で汚れたソリューション(a)を採用しました

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
23
meyerson

1つの可能な解決策は、-fstack-protector-strongフラグをサポートするGCC 4.9以降を使用することです。

3
Sjoerd

GCC 4.9にアップグレードする代わりに、フラグが定義されている場所を見つけて削除しようとしました。 Debian Wheezyでは、libpython2.7-minimalパッケージに属する/usr/lib/python2.7/plat-x86_64-linux-gnu/_sysconfigdata_nd.pyにあります。私の解決策は、このファイル内で-fstack-protector-strongをすべて-fstack-protectorに置き換えることでした。次に、pip installは正しいビルドコマンドを実行しました。

3
user323094