我正在尝试使用 pip 为 python 安装 Scrapy 包(以及其他包)。我尝试使用 python 3 和 python 2 进行安装,我已经安装/升级了安装工具,如下所示:$ 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 操作系统版本 10.12.1,使用的是 python 3.6。 有人知道这个问题的解决方案吗?
pip install --trusted-host pypi.python.org autopep8 (any package name)
此命令会将pypi.python.org
添加到受信任的源,并将安装所有必需的包。
我自己遇到了错误,键入此命令帮助我安装了 python 的所有 pip 包。
正如这里所说 https://bugs.python.org/issue28150 在以前版本的python中,Apple提供了OpenSSL软件包,但不再提供。
pip install certifi
运行命令,然后pip install Scrapy
为我修复了它
关于上述答案的一个注意事项:在 HTTPS 拦截代理后面的情况下,仅向受信任主机添加 pypi.python.org 已不再足够(我们有 zScaler)。
我目前的点数中.ini以下内容:
trusted-host = pypi.python.org pypi.org files.pythonhosted.org
运行pip -v install pkg
会给你一些提示,说明可能需要添加哪些主机。
尝试---告诉python不要将https与index指令和 http://地址一起使用(不是 https://)
pip install --index-url=http://pypi.python.org/simple/ --trusted-host pypi.python.org Scrapy
你可能在公司防火墙后面,我有过上述失败的经验,尽管我不会假装我对防火墙或SSL有足够的了解来理解为什么。在这种情况下,我能够解决这个问题的唯一方法是获取证书文件并将其传递给 python。有关详细信息,请参阅Kenorb的回答 此处.
如果你使用的是python3,你也可以试试这个:
python3 -m pip install --upgrade Scrapy --trusted-host pypi.org --trusted-host files.pythonhosted.org
pip3 install --trusted-host pypi.org --trusted-host files.pythonhosted.org <app>
似乎Scrapy
失败是因为安装Twisted
失败,而安装失败是因为incremental
失败。 运行pip install --upgrade pip && pip install --upgrade incremental
为我解决了这个问题。
如果将 pypi.python.org 添加为受信任的主机不起作用,请尝试添加 files.pythonhosted.org。例如
python -m pip install --upgrade --trusted-host files.pythonhosted.org <package-name>
在 Windows 10 中/搜索已安装 conda 的驱动器,或者它应该在 C:\用户\名称\AppData\Roaming\pipright 中,用鼠标右键单击并选择使用记事本编辑,离开 [全局] 并用打击代码替换您那里的内容,Ctrl+s 并重新运行代码。 它应该有效。
trusted-host = pypi.python.org pypi.org files.pythonhosted.org
感谢您的解决方案。在我的情况下,文件 %appdata%\pip\pip.ini 不存在。我用这个内容手动创建了它:
[global]
trusted-host = pypi.python.org files.pythonhosted.org pypi.org pypi.io
以下命令对我有用(使用 pip 安装软件包)
pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org <package_name>
您可以尝试sudo apt-get upgrade
以获取最新的软件包。它解决了我机器上的问题。
看起来他们现在也在使用 pypi.org。 我将以下内容添加到 %appdata%\pip\pip.ini 并且能够从 HTTPS 拦截代理后面下载我的软件包:
trusted-host = pypi.python.org files.pythonhosted.org pypi.org
我遇到了同样的问题。我试图为我的 Django 项目安装mysqlclient
。
就我而言,系统日期/时间不是最新的(Windows 8)。这导致了错误。因此,更新了我的系统日期时间并再次运行命令pip install mysqlclient
。它做到了工作。
希望这对那些执行所有命令(在其他答案中建议)而不检查系统日期/时间的人有所帮助。
这里的情况非常独特,但是让 Fiddler 运行(甚至不针对相同的进程)给了我相同的 SSL 错误。使用--verbose
运行 pip install 显示 Fiddler 出错,关闭 Fiddler 立即解决了问题。
奇怪这么多年没有人想出这个?
我调试了Python 2遗留设置并遇到了相同的错误,只是使用了其他一些软件包:
http://www.pylonshq.com/download/上的下载错误: [errno 1] _ssl.c:510: 错误:14090086:SSL 例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败 -- 某些软件包可能找不到! 未找到:['http://www.pylonshq.com/download/',这里也是我与列表中遗留软件包的内部服务器链接] ... 找不到"粘贴部署"的索引页(可能拼写错误? 找不到 PasteDeploy 的本地包或下载链接 回溯(最近一次调用): 文件"setup.py",第 50 行,在 "", 文件 "/usr/lib/python2.7/distutils/core.py",第 111 行,正在设置 _setup_distribution = dist = klass(attrs) 文件 "/usr/lib/python2.7/dist-packages/setuptools/dist.py",第 239 行,在initself.fetch_build_eggs(attrs.pop('setup_requires')) 中 文件 "/usr/lib/python2.7/dist-packages/setuptools/dist.py",第 264 行,fetch_build_eggs replace_conflicting=真 文件 "/usr/lib/python2.7/dist-packages/pkg_resources.py",第 620 行,解析中 dist = best[req.key] = env.best_match(req, ws, installer) 文件 "/usr/lib/python2.7/dist-packages/pkg_resources.py",第 858 行,best_match 返回 self.Acquire(req, installer) # 尝试下载/安装 文件 "/usr/lib/python2.7/dist-packages/pkg_resources.py",第 870 行,在获取 返回安装程序(必需) 文件 "/usr/lib/python2.7/dist-packages/setuptools/dist.py",第 314 行,fetch_build_egg 返回cmd.easy_install(要求) 文件 "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py",第 616 行,easy_install 返回self.install_item(规格、位置、位置、TMPDIR、部门) 文件 "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py",第 646 行,install_item dists = self.install_eggs(规格、下载、TMPDIR) 文件 "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py",第 834 行,install_eggs 返回self.build_and_install(setup_script、setup_base) 文件 "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py",第 1040 行,build_and_install self.run_setup(setup_script、setup_base、参数) 文件 "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py",第 1028 行,run_setup raise DistutilsError("安装程序脚本以 %s 退出" % (v.args[0],)) distutils.errors.DistutilsError: 安装程序脚本退出并显示错误: 找不到适合 Requirements.parse('PasteDeploy') 的发行版
显然,该下载网站处于离线状态,easy_install和鸡蛋已被弃用。但是你仍然可以从中学习,我想:你需要把需要的包放在setup_requires=[]
列表中,而不是install_requires=[]
,然后,它才找到带有旧包的内部包服务器(你也可以在这里拿一个开放的包服务器)。
包裹在
install_requires=["PasteDeploy>=1.0.0", ...],
但是setuptools需要该条目,而不是:
setup_requires=["PasteDeploy>=1.0.0, ...],
对于某些软件包,将它们放在install_requires=[]
列表中是不够的,因为在安装之前需要的setuptools设置过程中已经需要它们。
(只有安装工具不应该在那里,请参阅安装工具应该在setup.cfg文件的setup_requires条目中吗?)。