我在我的IDE PyCharm中运行一段请求代码有困难。该代码非常基础,并且可以在我的系统上适用于除一个网站以外的所有网站。这是我正在运行的代码:
import requests
initialURL = 'http://www.acastipharma.com/'
r = requests.get(initialURL)
运行此代码时,我收到一条错误消息,结尾为
requests.exceptions.SSLError: HTTPSConnectionPool(host='www.acastipharma.com', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLError(1, '[SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:645)'),))
我首先认为这是一个SSL问题,但是如果我使用verify = False开关运行请求命令,我仍然会遇到相同的错误。这使我相信该问题不是SSL问题。我尝试从其他IDE运行相同的代码,但未发生错误,这使我相信问题出在我的IDE PyCharm上。我尝试在PyCharm中使用其他项目解释器,但也未发生该错误。我意识到两个不同的PyCharm项目解释器使用了不同版本的请求,而我使用的每个具有最新版本请求的PyCharm项目解释器都可以正常工作,但是如果PyCharm项目解释器使用了较旧版本的请求,则会出现错误。不幸的是,由于某种原因,PyCharm不允许我更新我正在使用的PyCharm项目解释器中的请求模块。这是我尝试更新请求时从PyCharm收到的错误消息:
Could not find a version that satisfies the requirement requests==2.19.1 (from versions: )
No matching distribution found for requests==2.19.1
PyCharm然后建议我从终端运行升级命令:
pip install -U requests==2.19.1
以下是PyCharm的建议:
Try to run this command from the system terminal. Make sure that you use the correct version of 'pip' installed for your Python interpreter located at '/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5'.
当我从终端运行它时,我得到了:
Requirement already up-to-date: requests==2.19.1 in ./anaconda/lib/python3.5/site-packages (2.19.1)
似乎从终端升级到错误的目录,它正在尝试更新
./anaconda/lib/python3.5/site-packages
当我需要它进行更新
/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5
当我在终端上运行pip install -U request == 2.19.1命令时,有人知道如何指定正确的更新目录。无论是在PyCharm内部还是在终端上,如何获得正确升级请求的任何帮助,都将不胜感激。
答案 0 :(得分:0)
事实证明,问题出在两个方面。第一个问题是我使用的项目解释器的OpenSSL版本已过时。我的系统上也有两个版本的Python 3.5,每当我尝试更新程序包(即OpenSSL)时,项目解释程序未使用的python版本都会更新,而不是我以前用于的Python 3.5版本。项目解释器。我最终安装了Python 3.7,并基于Python 3.7创建了一个项目解释器。通过在我的系统上只有3.7版本,我能够更新与3.7特别相关的OpenSSL软件包,问题就消失了。