" SSL证书验证失败"使用pip安装包

时间:2017-02-28 13:21:03

标签: python macos ssl pip

我正在尝试使用pip为python安装Scrapy软件包(以及其他软件包)。我已经尝试使用python 3和python 2进行安装,我已经安装/升级了setuptools,如下所示:$ pip3 install --upgrade setuptools,我尝试使用--trusted-host选项,如下所示:$ pip3 install --trusted-host pypi.python.org Scrapy。但是当我运行$ pip3 install Scrapy时,我总是得到相同的错误消息。完整的输出是:

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/

我使用的是Mac OS版本10.12.1,并且正在使用python 3.6。 有人知道这个问题的解决方案吗?

15 个答案:

答案 0 :(得分:12)

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

此命令会将pypi.python.org添加到受信任的来源,并将安装所有必需的包。

我自己遇到了错误并输入此命令帮助我安装了python的所有pip包。

答案 1 :(得分:8)

关于上述答案的一点说明:如果您是HTTPS拦截代理(我们有zScaler),那么仅将pypi.python.org添加到可信主机已经不够了。

我目前在pip.ini中有以下内容:

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

运行pip -v install pkg会给你一些关于可能需要添加哪些主机的提示。

答案 2 :(得分:7)

正如此处所述[{3}}在以前的python版本中,Apple提供了OpenSSL软件包,但现在不再提供。

运行命令pip install certifi,然后pip install Scrapy为我修复

答案 3 :(得分:3)

尝试一下 - 告诉python不要使用带有索引指令的https和http://地址(不是https://)

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

你可能在公司防火墙后面,我有经验甚至上面的失败,虽然我不会假装我知道足够的防火墙或SSL了解原因。在这种情况下,我能够解决的唯一方法是获取证书文件并将其传递给python。有关详细信息,请参阅此处kenorb’s answer

答案 4 :(得分:1)

似乎Scrapy失败是因为安装Twisted失败,而失败是因为incremental失败。运行pip install --upgrade pip && pip install --upgrade incremental为我解决了这个问题。

答案 5 :(得分:1)

谢谢您的解决方案。在我的情况下,文件%appdata%\ pip \ pip.ini不存在。我是用以下内容手动创建的:

[global]
trusted-host = pypi.python.org files.pythonhosted.org pypi.org pypi.io

答案 6 :(得分:0)

如果将pypi.python.org添加为可信主机不起作用,请尝试添加files.pythonhosted.org。例如

python -m pip install --upgrade --trusted-host files.pythonhosted.org <package-name>

答案 7 :(得分:0)

您可以尝试sudo apt-get upgrade获取最新的套餐。它修复了我的机器上的问题。

答案 8 :(得分:0)

看起来他们现在也在使用pypi.org。我将以下内容添加到%appdata%\ pip \ pip.ini,并能够从HTTPS拦截代理的后面下载我的软件包:

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

答案 9 :(得分:0)

  

在Windows 10中/搜索驱动器,您已经安装了conda,或者应该用鼠标右键单击它在C:\ Users \ name \ AppData \ Roaming \ pipright中,然后选择用记事本编辑,保留[global]并替换为只要您有打击代码,请按Ctrl + s并重新运行代码。应该可以。

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

答案 10 :(得分:0)

我有同样的问题。我试图为我的Django项目安装mysqlclient

就我而言,系统日期/时间不是最新的(Windows 8)。这就是导致错误的原因。因此,更新了我的系统日期时间并再次运行了命令pip install mysqlclient。它完成了工作。

希望这对那些正在执行所有命令(建议其他答案)而无需检查系统日期/时间的人很有帮助。

答案 11 :(得分:0)

 pip3 install --trusted-host pypi.org --trusted-host files.pythonhosted.org <app>

答案 12 :(得分:0)

这里的情况非常独特,但是运行Fiddler(甚至没有针对相同的进程)也给了我同样的SSL错误。使用--verbose运行pip install显示Fiddler错误,关闭Fiddler立即解决了该问题。

答案 13 :(得分:0)

以下命令对我有用(使用 pip 安装包)

pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org <package_name>

答案 14 :(得分:-1)

如果您使用的是python3,也可以尝试以下方法:

python3 -m pip install --upgrade Scrapy --trusted-host pypi.org --trusted-host files.pythonhosted.org