如何控制新创建的 venv
pip
使用的 --- 的版本?
默认情况下,它使用销售的 pip 发行版,该发行版可能已过时或因任何其他原因不适合。我希望能够创建一个 venv
最初 安装了用户指定版本的 pip,而不是创建一个然后从环境中升级 pip 安装。
原文由 wim 发布,翻译遵循 CC BY-SA 4.0 许可协议
如何控制新创建的 venv
pip
使用的 --- 的版本?
默认情况下,它使用销售的 pip 发行版,该发行版可能已过时或因任何其他原因不适合。我希望能够创建一个 venv
最初 安装了用户指定版本的 pip,而不是创建一个然后从环境中升级 pip 安装。
原文由 wim 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答873 阅读✓ 已解决
1 回答1.8k 阅读✓ 已解决
从 Python 3.9 开始,stdlib
venv
模块有EnvBuilder.upgrade_dependencies
。不幸的是,它有两个缺点:最好直接安装最新版本!
venv
CLI 提供了一个在这里很有用的--without-pip
参数。您可以使用它来选择退出 vendored pip,然后实际使用 vendored pip wheel 来安装您想要的 pip 版本(以及您在新创建的虚拟环境中可能需要的任何其他包)。最好将它放入函数中 - 这会进入您的 shell 配置文件或 rc 文件:
如所写,此函数仅从索引中提取最新的
pip
、setuptools
和wheel
。要强制执行特定版本,您只需更改 shell 脚本的这一行:例如:
For Python 2.7 users, you may do a similar trick because
virtualenv
provides similar command-line options in--no-pip
,--no-setuptools
, and--no-wheel
,并且 自 Python 2.7.9 以来,仍然有一个销售的 pip wheel 可用于引导程序。 Pathlib 将不可用,因此您需要将pathlib
用法更改为os.path
+glob
。