• error: command 'gcc' failed with exit status 1


    在Linux下安装Python的Scrapy模块时出现这个错误提示:

    error: command 'gcc' failed with exit status 1
    

    完整的安装过程及出错信息如下:

    $ python3 -m pip install scrapy
    Collecting scrapy
      Downloading http://pypi.doubanio.com/packages/6e/c2/2b35c88dec01745fe2b068c9187c7dc966b063a0502e26fce19cd18cbd9d/Scrapy-1.3.0-py2.py3-none-any.whl (239kB)
        100% |████████████████████████████████| 245kB 693kB/s 
    Requirement already satisfied: six>=1.5.2 in ./scrapy_env/lib/python3.5/site-packages (from scrapy)
    Requirement already satisfied: parsel>=0.9.5 in ./scrapy_env/lib/python3.5/site-packages (from scrapy)
    Collecting queuelib (from scrapy)
      Downloading http://pypi.doubanio.com/packages/16/4f/b307fc978a21bfbb138e8e01a9f4953191d439e30578f5e4fd5befa77de1/queuelib-1.4.2-py2.py3-none-any.whl
    Collecting service-identity (from scrapy)
      Downloading http://pypi.doubanio.com/packages/80/f5/8b1604e4d85ce60333a2fd4bc7b7743b21949b434b7c1c2c77eee9e7cd6f/service_identity-16.0.0-py2.py3-none-any.whl
    Collecting pyOpenSSL (from scrapy)
      Downloading http://pypi.doubanio.com/packages/ac/93/b4cd538d31adacd07f83013860db6b88d78755af1f3fefe68ec22d397e7b/pyOpenSSL-16.2.0-py2.py3-none-any.whl (43kB)
        100% |████████████████████████████████| 51kB 193kB/s 
    Requirement already satisfied: w3lib>=1.15.0 in ./scrapy_env/lib/python3.5/site-packages (from scrapy)
    Requirement already satisfied: lxml in ./scrapy_env/lib/python3.5/site-packages (from scrapy)
    Collecting Twisted>=13.1.0 (from scrapy)
      Downloading http://pypi.doubanio.com/packages/dc/c0/a0114a6d7fa211c0904b0de931e8cafb5210ad824996cc6a9d67f3bae22c/Twisted-16.6.0.tar.bz2 (3.0MB)
        100% |████████████████████████████████| 3.0MB 605kB/s 
    Requirement already satisfied: cssselect>=0.9 in ./scrapy_env/lib/python3.5/site-packages (from scrapy)
    Requirement already satisfied: PyDispatcher>=2.0.5 in ./scrapy_env/lib/python3.5/site-packages (from scrapy)
    Requirement already satisfied: pyasn1 in ./scrapy_env/lib/python3.5/site-packages (from service-identity->scrapy)
    Requirement already satisfied: pyasn1-modules in ./scrapy_env/lib/python3.5/site-packages (from service-identity->scrapy)
    Requirement already satisfied: attrs in ./scrapy_env/lib/python3.5/site-packages (from service-identity->scrapy)
    Collecting cryptography>=1.3.4 (from pyOpenSSL->scrapy)
      Downloading http://pypi.doubanio.com/packages/99/df/71c7260003f5c469cec3db4c547115df39e9ce6c719a99e067ba0e78fd8a/cryptography-1.7.2.tar.gz (420kB)
        100% |████████████████████████████████| 430kB 651kB/s 
    Requirement already satisfied: zope.interface>=4.0.2 in ./scrapy_env/lib/python3.5/site-packages (from Twisted>=13.1.0->scrapy)
    Requirement already satisfied: constantly>=15.1 in ./scrapy_env/lib/python3.5/site-packages (from Twisted>=13.1.0->scrapy)
    Requirement already satisfied: incremental>=16.10.1 in ./scrapy_env/lib/python3.5/site-packages (from Twisted>=13.1.0->scrapy)
    Requirement already satisfied: idna>=2.0 in ./scrapy_env/lib/python3.5/site-packages (from cryptography>=1.3.4->pyOpenSSL->scrapy)
    Requirement already satisfied: setuptools>=11.3 in ./scrapy_env/lib/python3.5/site-packages (from cryptography>=1.3.4->pyOpenSSL->scrapy)
    Requirement already satisfied: cffi>=1.4.1 in ./scrapy_env/lib/python3.5/site-packages (from cryptography>=1.3.4->pyOpenSSL->scrapy)
    Requirement already satisfied: pycparser in ./scrapy_env/lib/python3.5/site-packages (from cffi>=1.4.1->cryptography>=1.3.4->pyOpenSSL->scrapy)
    Installing collected packages: queuelib, cryptography, pyOpenSSL, service-identity, Twisted, scrapy
      Running setup.py install for cryptography ... error
        Complete output from command /home/cavin/Code/Python/scrapy_env/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-71s5o_mk/cryptography/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('
    ', '
    ');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-6ppxgrzh-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/cavin/Code/Python/scrapy_env/include/site/python3.5/cryptography:
        running install
        running build
        running build_py
        creating build
        creating build/lib.linux-x86_64-3.5
        creating build/lib.linux-x86_64-3.5/cryptography
        copying src/cryptography/utils.py -> build/lib.linux-x86_64-3.5/cryptography
        copying src/cryptography/fernet.py -> build/lib.linux-x86_64-3.5/cryptography
        copying src/cryptography/exceptions.py -> build/lib.linux-x86_64-3.5/cryptography
        copying src/cryptography/__init__.py -> build/lib.linux-x86_64-3.5/cryptography
        copying src/cryptography/__about__.py -> build/lib.linux-x86_64-3.5/cryptography
        creating build/lib.linux-x86_64-3.5/cryptography/x509
        copying src/cryptography/x509/oid.py -> build/lib.linux-x86_64-3.5/cryptography/x509
        copying src/cryptography/x509/name.py -> build/lib.linux-x86_64-3.5/cryptography/x509
        copying src/cryptography/x509/general_name.py -> build/lib.linux-x86_64-3.5/cryptography/x509
        copying src/cryptography/x509/extensions.py -> build/lib.linux-x86_64-3.5/cryptography/x509
        copying src/cryptography/x509/base.py -> build/lib.linux-x86_64-3.5/cryptography/x509
        copying src/cryptography/x509/__init__.py -> build/lib.linux-x86_64-3.5/cryptography/x509
        creating build/lib.linux-x86_64-3.5/cryptography/hazmat
        copying src/cryptography/hazmat/__init__.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat
        creating build/lib.linux-x86_64-3.5/cryptography/hazmat/primitives
        copying src/cryptography/hazmat/primitives/serialization.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/primitives
        copying src/cryptography/hazmat/primitives/padding.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/primitives
        copying src/cryptography/hazmat/primitives/keywrap.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/primitives
        copying src/cryptography/hazmat/primitives/hmac.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/primitives
        copying src/cryptography/hazmat/primitives/hashes.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/primitives
        copying src/cryptography/hazmat/primitives/constant_time.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/primitives
        copying src/cryptography/hazmat/primitives/cmac.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/primitives
        copying src/cryptography/hazmat/primitives/__init__.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/primitives
        creating build/lib.linux-x86_64-3.5/cryptography/hazmat/bindings
        copying src/cryptography/hazmat/bindings/__init__.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/bindings
        creating build/lib.linux-x86_64-3.5/cryptography/hazmat/backends
        copying src/cryptography/hazmat/backends/multibackend.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/backends
        copying src/cryptography/hazmat/backends/interfaces.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/backends
        copying src/cryptography/hazmat/backends/__init__.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/backends
        creating build/lib.linux-x86_64-3.5/cryptography/hazmat/primitives/twofactor
        copying src/cryptography/hazmat/primitives/twofactor/utils.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/primitives/twofactor
        copying src/cryptography/hazmat/primitives/twofactor/totp.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/primitives/twofactor
        copying src/cryptography/hazmat/primitives/twofactor/hotp.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/primitives/twofactor
        copying src/cryptography/hazmat/primitives/twofactor/__init__.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/primitives/twofactor
        creating build/lib.linux-x86_64-3.5/cryptography/hazmat/primitives/kdf
        copying src/cryptography/hazmat/primitives/kdf/x963kdf.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/primitives/kdf
        copying src/cryptography/hazmat/primitives/kdf/scrypt.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/primitives/kdf
        copying src/cryptography/hazmat/primitives/kdf/pbkdf2.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/primitives/kdf
        copying src/cryptography/hazmat/primitives/kdf/kbkdf.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/primitives/kdf
        copying src/cryptography/hazmat/primitives/kdf/hkdf.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/primitives/kdf
        copying src/cryptography/hazmat/primitives/kdf/concatkdf.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/primitives/kdf
        copying src/cryptography/hazmat/primitives/kdf/__init__.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/primitives/kdf
        creating build/lib.linux-x86_64-3.5/cryptography/hazmat/primitives/interfaces
        copying src/cryptography/hazmat/primitives/interfaces/__init__.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/primitives/interfaces
        creating build/lib.linux-x86_64-3.5/cryptography/hazmat/primitives/ciphers
        copying src/cryptography/hazmat/primitives/ciphers/modes.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/primitives/ciphers
        copying src/cryptography/hazmat/primitives/ciphers/base.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/primitives/ciphers
        copying src/cryptography/hazmat/primitives/ciphers/algorithms.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/primitives/ciphers
        copying src/cryptography/hazmat/primitives/ciphers/__init__.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/primitives/ciphers
        creating build/lib.linux-x86_64-3.5/cryptography/hazmat/primitives/asymmetric
        copying src/cryptography/hazmat/primitives/asymmetric/utils.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/primitives/asymmetric
        copying src/cryptography/hazmat/primitives/asymmetric/rsa.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/primitives/asymmetric
        copying src/cryptography/hazmat/primitives/asymmetric/padding.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/primitives/asymmetric
        copying src/cryptography/hazmat/primitives/asymmetric/ec.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/primitives/asymmetric
        copying src/cryptography/hazmat/primitives/asymmetric/dsa.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/primitives/asymmetric
        copying src/cryptography/hazmat/primitives/asymmetric/dh.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/primitives/asymmetric
        copying src/cryptography/hazmat/primitives/asymmetric/__init__.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/primitives/asymmetric
        creating build/lib.linux-x86_64-3.5/cryptography/hazmat/bindings/openssl
        copying src/cryptography/hazmat/bindings/openssl/binding.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/bindings/openssl
        copying src/cryptography/hazmat/bindings/openssl/_conditional.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/bindings/openssl
        copying src/cryptography/hazmat/bindings/openssl/__init__.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/bindings/openssl
        creating build/lib.linux-x86_64-3.5/cryptography/hazmat/bindings/commoncrypto
        copying src/cryptography/hazmat/bindings/commoncrypto/binding.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/bindings/commoncrypto
        copying src/cryptography/hazmat/bindings/commoncrypto/__init__.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/bindings/commoncrypto
        creating build/lib.linux-x86_64-3.5/cryptography/hazmat/backends/openssl
        copying src/cryptography/hazmat/backends/openssl/x509.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/backends/openssl
        copying src/cryptography/hazmat/backends/openssl/utils.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/backends/openssl
        copying src/cryptography/hazmat/backends/openssl/rsa.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/backends/openssl
        copying src/cryptography/hazmat/backends/openssl/hmac.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/backends/openssl
        copying src/cryptography/hazmat/backends/openssl/hashes.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/backends/openssl
        copying src/cryptography/hazmat/backends/openssl/encode_asn1.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/backends/openssl
        copying src/cryptography/hazmat/backends/openssl/ec.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/backends/openssl
        copying src/cryptography/hazmat/backends/openssl/dsa.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/backends/openssl
        copying src/cryptography/hazmat/backends/openssl/dh.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/backends/openssl
        copying src/cryptography/hazmat/backends/openssl/decode_asn1.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/backends/openssl
        copying src/cryptography/hazmat/backends/openssl/cmac.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/backends/openssl
        copying src/cryptography/hazmat/backends/openssl/ciphers.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/backends/openssl
        copying src/cryptography/hazmat/backends/openssl/backend.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/backends/openssl
        copying src/cryptography/hazmat/backends/openssl/__init__.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/backends/openssl
        creating build/lib.linux-x86_64-3.5/cryptography/hazmat/backends/commoncrypto
        copying src/cryptography/hazmat/backends/commoncrypto/hmac.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/backends/commoncrypto
        copying src/cryptography/hazmat/backends/commoncrypto/hashes.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/backends/commoncrypto
        copying src/cryptography/hazmat/backends/commoncrypto/ciphers.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/backends/commoncrypto
        copying src/cryptography/hazmat/backends/commoncrypto/backend.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/backends/commoncrypto
        copying src/cryptography/hazmat/backends/commoncrypto/__init__.py -> build/lib.linux-x86_64-3.5/cryptography/hazmat/backends/commoncrypto
        running egg_info
        writing entry points to src/cryptography.egg-info/entry_points.txt
        writing requirements to src/cryptography.egg-info/requires.txt
        writing top-level names to src/cryptography.egg-info/top_level.txt
        writing src/cryptography.egg-info/PKG-INFO
        writing dependency_links to src/cryptography.egg-info/dependency_links.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
        generating cffi module 'build/temp.linux-x86_64-3.5/_padding.c'
        creating build/temp.linux-x86_64-3.5
        generating cffi module 'build/temp.linux-x86_64-3.5/_constant_time.c'
        generating cffi module 'build/temp.linux-x86_64-3.5/_openssl.c'
        building '_openssl' extension
        creating build/temp.linux-x86_64-3.5/build
        creating build/temp.linux-x86_64-3.5/build/temp.linux-x86_64-3.5
        gcc -pthread -Wno-unused-result -Wsign-compare -Wunreachable-code -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/home/cavin/Code/Python/scrapy_env/include -I/usr/include/python3.5m -c build/temp.linux-x86_64-3.5/_openssl.c -o build/temp.linux-x86_64-3.5/build/temp.linux-x86_64-3.5/_openssl.o
        build/temp.linux-x86_64-3.5/_openssl.c:12:24: fatal error: pyconfig.h: No such file or directory
         #  include <pyconfig.h>
                                ^
        compilation terminated.
        error: command 'gcc' failed with exit status 1
        
        ----------------------------------------
    Command "/home/cavin/Code/Python/scrapy_env/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-71s5o_mk/cryptography/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('
    ', '
    ');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-6ppxgrzh-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/cavin/Code/Python/scrapy_env/include/site/python3.5/cryptography" failed with error code 1 in /tmp/pip-build-71s5o_mk/cryptography/
    

    经由搜索得到的结果,几乎都是说要安装python-dev(Ubuntu)或者python-devel(Centos),但是我运行sudo dnf install python-devel却得到提示说这个依赖已经存在了。然后把网上提到的相关的几个包都安装了,错误还是一样。

    直到后来看到国外一个博客的文章,受到启发:
    http://alexsleat.co.uk/2011/01/01/fatal-error-python-h-no-such-file-or-directory/

    它里面说到和其它答案不一样的地方是,它明确地指出了python版本,命令如下:

    sudo apt-get install python2.6-dev
    

    于是我想到:我的fedora里面同时存在python2和python3,而且默认的是python2,而我现在是要在python3下安装scrapy,所以是不是也要指明是python3.5-devel呢?。于是尝试了下:

    sudo dnf install python3.5-devel
    

    出错了,好像是提示没有这个包。然后我改了一下:

    sudo dnf install python3-devel
    

    这下成功了!然后再安装Scrapy

    python3 -m pip install scrapy
    

    终于成功了!

  • 相关阅读:
    临时表和表变量
    北航发生一场悲剧:计算机学子复习过程中突然倒地
    2w+长文带你剖析ConcurrentHashMap~!
    2020年最新ZooKeeper面试题(附答案)
    MQ消息中间件,面试能问些什么?
    设计模式之初体验
    IIS7 下使用ExtJs出现Ext未定义的问题
    修改apache+php上传文件大小限制
    memcache support requires ZLIB解决办法
    Windows下Memcache的安装方法
  • 原文地址:https://www.cnblogs.com/wuzhiblog/p/6375796.html
Copyright © 2020-2023  润新知