• SSL certificate verify failed” using pip to install packages


    13

    I am trying to install the Scrapy package (among others) for python using pip. I have tried doing the installation using python 3 and python 2, I have installed/upgraded the setuptools like so: $ pip3 install --upgrade setuptools, I have tried to use the --trusted-host option like so: $ pip3 install --trusted-host pypi.python.org Scrapy. But I always get the same error message when I run $ pip3 install Scrapy. The complete output is this:

    Collecting Scrapy
      Using cached Scrapy-1.3.2-py2.py3-none-any.whl
    Collecting PyDispatcher>=2.0.5 (from Scrapy)
      Using cached PyDispatcher-2.0.5.tar.gz
    Collecting service-identity (from Scrapy)
      Using cached service_identity-16.0.0-py2.py3-none-any.whl
    Collecting pyOpenSSL (from Scrapy)
      Using cached pyOpenSSL-16.2.0-py2.py3-none-any.whl
    Collecting w3lib>=1.15.0 (from Scrapy)
      Using cached w3lib-1.17.0-py2.py3-none-any.whl
    Collecting parsel>=1.1 (from Scrapy)
      Using cached parsel-1.1.0-py2.py3-none-any.whl
    Collecting queuelib (from Scrapy)
      Using cached queuelib-1.4.2-py2.py3-none-any.whl
    Requirement already satisfied: six>=1.5.2 in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages (from Scrapy)
    Collecting Twisted>=13.1.0 (from Scrapy)
      Using cached Twisted-17.1.0.tar.bz2
        Complete output from command python setup.py egg_info:
        Download error on https://pypi.python.org/simple/incremental/: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749) -- Some packages may not be found!
        Couldn't find index page for 'incremental' (maybe misspelled?)
        Download error on https://pypi.python.org/simple/: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749) -- Some packages may not be found!
        No local packages or working download links found for incremental>=16.10.1
        Traceback (most recent call last):
          File "<string>", line 1, in <module>
          File "/private/var/folders/gy/5xt04_452z791v1qjs1yzxkh0000gn/T/pip-build-nkv4jozy/Twisted/setup.py", line 21, in <module>
            setuptools.setup(**_setup["getSetupArgs"]())
          File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/distutils/core.py", line 108, in setup
            _setup_distribution = dist = klass(attrs)
          File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/setuptools/dist.py", line 317, in __init__
            self.fetch_build_eggs(attrs['setup_requires'])
          File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/setuptools/dist.py", line 372, in fetch_build_eggs
            replace_conflicting=True,
          File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pkg_resources/__init__.py", line 851, in resolve
            dist = best[req.key] = env.best_match(req, ws, installer)
          File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pkg_resources/__init__.py", line 1123, in best_match
            return self.obtain(req, installer)
          File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pkg_resources/__init__.py", line 1135, in obtain
            return installer(requirement)
          File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/setuptools/dist.py", line 440, in fetch_build_egg
            return cmd.easy_install(req)
          File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/setuptools/command/easy_install.py", line 668, in easy_install
            raise DistutilsError(msg)
        distutils.errors.DistutilsError: Could not find suitable distribution for Requirement.parse('incremental>=16.10.1')
    
        ----------------------------------------
    Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/gy/5xt04_452z791v1qjs1yzxkh0000gn/T/pip-build-nkv4jozy/Twisted/

    I am on a mac OS version 10.12.1 and am using python 3.6. Does anybody know a solution to this problem?

    share  improve this question   

    13 Answers

    13

    pip install --trusted-host pypi.python.org autopep8 (any package name)

    This command will add pypi.python.org to the trusted sources and will install all the required package.

    I ran into the error myself and typing this command helped me install all the pip packages of python.

    share  improve this answer   
    • 3
      it should be noted that this is a VERY RISKY IDEA! this disables HTTPS certificate validation, and allows a man in the middle to install ARBITRARY CODE. curl calls this option --insecure (which is more accurate than "trusted"). the accepted answer about OpenSSL is correct – Ricky Cook Jan 21 '19 at 0:07 
    10
     

    As stated here https://bugs.python.org/issue28150 in previous versions of python Apple supplied the OpenSSL packages but does not anymore.

    Running the command pip install certifi and then pip install Scrapy fixed it for me

    share  improve this answer   
    •  
      also possible to install OpenSSL via brew (or whatever package manager). on some Linux systems, you also may need to install ca-certificates (or whatever variation of that your distro has, but that's usually the correct name) – Ricky Cook Jan 21 '19 at 0:10
    8

    One note on the above answers: it is no longer sufficient to add just pypi.python.org to the trusted-hosts in the case where you are behind an HTTPS-intercepting proxy (we have zScaler).

    I currently have the following in my pip.ini:

    trusted-host = pypi.python.org pypi.org files.pythonhosted.org

    Running pip -v install pkg will give you some hints as to which hosts might need to be added.

    share  improve this answer   
    •  
      If pip.ini does not exist, you have to also create the [global] section, then put in the "trusted-host = ..." line. – Pieter-Jan Busschaert Aug 27 '18 at 14:24
    •  
      You can also supply multiple --trusted-host arguments to your pip install. – dragon788 Nov 21 '18 at 16:03
    • 2
      it should be noted that this is a VERY RISKY IDEA! this disables HTTPS certificate validation, and allows a man in the middle to install ARBITRARY CODE. curl calls this option --insecure (which is more accurate than "trusted"). the accepted answer about OpenSSL is correct – Ricky Cook Jan 21 '19 at 0:08
    4

    Something to try --- tell python to not use https with the index directive and a http:// address (not https://)

    pip install --index-url=http://pypi.python.org/simple/ --trusted-host pypi.python.org  Scrapy

    You may be behind a corporate firewall and Ive have experiences where even the above failed, though Im not going to pretend like I know enough about firewalls or SSL to understand why. In that case the only way I was able to get around that was to get a certificate file and pass it to python. See kenorb’s answer here for details.

    share  improve this answer   
    2

    It seems that Scrapy fails because installing Twisted fails, which fails because incremental fails. Running pip install --upgrade pip && pip install --upgrade incremental fixed this for me.

    share  improve this answer   
    1

    If adding pypi.python.org as a trusted host does not work, you try adding files.pythonhosted.org. For example

    python -m pip install --upgrade --trusted-host files.pythonhosted.org <package-name>
    share  improve this answer   
    1

    It looks like they are also using pypi.org now. I added the following to %appdata%pippip.ini and was able to download my packages from behind an HTTPS-intercepting proxy:

    trusted-host = pypi.python.org files.pythonhosted.org pypi.org

    share  improve this answer   
    1

    In Windows 10 / search the drive you have installed the conda or it should be in C:Users ameAppDataRoamingpipright with your mouse right click and select edit with notepad leave the [global] and replace what ever you have in there with blow code, Ctrl+s and rerun the code. it should work.

    trusted-host = pypi.python.org pypi.org files.pythonhosted.org
    share  improve this answer   
    1
     pip3 install --trusted-host pypi.org --trusted-host files.pythonhosted.org <app>
    share  improve this answer   
    0

    You can try sudo apt-get upgrade to get the latest packages. It fixed the issue on my machine.

    share  improve this answer   
    0

    If you're using python3, you can try this too:

    python3 -m pip install --upgrade Scrapy --trusted-host pypi.org --trusted-host files.pythonhosted.org
    share  improve this answer   
    0

    I had same issue. I was trying to install mysqlclient for my Django project.

    In my case the system date/time wasn't up-to date (Windows 8). That's causing the error. So, updated my system date time and ran the command pip install mysqlclient again. And it did the work.

    Hope this would be helpful for those people who're executing all the commands out there (suggesting in other answers) without checking their system date/time.

    share  improve this answer   
    0

    Thank you for the solution. In my case the file %appdata%pippip.ini was not present. I created it manually with this content:

    [global]
    trusted-host = pypi.python.org files.pythonhosted.org pypi.org pypi.io
  • 相关阅读:
    http1.1长连接实战(一)
    【转】微服务与SOA之间差了一个ESB
    在SpringBoot 1.5.3上使用gradle引入hikariCP
    狮子心
    为啥他们不作为
    Redis 后台运行
    Jquery 动态生成的元素绑定事件
    linux tzselect 设置时区
    Docker 容器内配置Tomcat manager 远程控制
    Docker基于容器创建镜像
  • 原文地址:https://www.cnblogs.com/kungfupanda/p/13354548.html
Copyright © 2020-2023  润新知