【问题标题】:Default PIP in python virtual environment is ancient, how to fix it?python虚拟环境中的默认PIP是古老的,如何修复它?
【发布时间】:2021-08-24 17:29:31
【问题描述】:

我使用 python3 -m venv 创建了一个虚拟环境,在那个虚拟环境中我的设置​​是:

python 3.5.2 点 8.1.1 Mac OS 10.13.6

那个 pip 版本非常旧,会导致下面描述的问题:如何让 venv 安装更新版本的 pip?

每当我运行“pip install”时,我都会收到以下表单错误:

Could not fetch URL https://pypi.python.org/simple/<any_package>/: There was a problem confirming the ssl certificate: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:645) - skipping 

我已经使用 = flask、gunicorn 和 requests 进行了尝试,并认为这不是特定于包的问题。

我试图解决的问题:

我看到这个链接建议我应该以某种方式升级 pip:https://github.com/pypa/pip/issues/5226

所以我将 pip 升级到了最新版本: 来自 /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/pip (python 3.5) 的 pip 20.0.2

但问题仍然存在。然后我将venv升级到最新版本。

但问题再次出现。

我在网上做了一些研究,发现了以下 github 问题:https://github.com/pypa/pip/issues/5363

问题陈述文本的一部分与我的 TLS 问题非常相似,但似乎没有一个答案能够解决问题(粘贴每个答案都会导致相同的 TLS 问题)。

我终于找到了可行的方法:

来自这个问题:Upgrading pip/installing django - [SSL: TLSV1_ALERT_PROTOCOL_VERSION]

解决方法如下:

 curl https://bootstrap.pypa.io/get-pip.py | python3

将我的“虚拟环境的 pip”升级到正确的版本。但是我还没有弄清楚如何让我的默认 pip(当我创建一个新的虚拟环境时)保持最新。

【问题讨论】:

标签: python python-3.x pip


【解决方案1】:

到今天为止,这是不可能的。

Python 3.9 开始,应该可以做类似path/to/pythonX.Y -m venv --upgrade-deps .venv 的事情,这将在新版本中升级 pipsetuptools创建虚拟环境:

如果它更适合您的工作流程,您可以尝试 virtualenv。据我所知,它总是尝试在它创建的虚拟环境中安装最新版本的 pip

venv 的文档末尾有一个代码示例,展示了如何创建一个工具来下载和安装最新的 pip设置工具

用户wim在这里提出了一个有趣的建议:

我有一个名为 ve 的工具,它可以做类似的事情:

类似问题有一些答案,建议修改Python标准库中ensurepip捆绑的wheel文件,但我不建议这样做。

类似问题:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-21
    • 1970-01-01
    • 2018-02-11
    • 2021-12-10
    • 1970-01-01
    • 2012-07-24
    • 2019-06-15
    • 1970-01-01
    相关资源
    最近更新 更多