Python3 -m venv 创建的虚拟环境里默认安装的 setuptools 模块为什么是旧版的?

另外,现在每次创建一个虚拟环境,我都要在虚拟环境里安装一次 flake8 和 yapf 模块,我的系统环境已经安装了这 2 个模块,有没有什么办法能不共享系统环境, 又能直接使用这 2 个模块?


Python3 -m venv 创建的虚拟环境里默认安装的 setuptools 模块为什么是旧版的?
4 回复

老的 venv 可以 --use-system-package 我记得。


这是因为 Python 的 venv 模块在创建虚拟环境时,会从标准库的 ensurepip 中复制一个“引导”版本的 pipsetuptools。这个引导版本是 Python 发行版自带的,为了保证环境创建过程不依赖网络且绝对可靠,它通常不是最新版。

你可以通过一个简单的命令验证和升级它:

# 激活你的虚拟环境后,运行:
python -m pip install --upgrade pip setuptools

这其实是设计使然,不是 bug。

venv 里难道不是直接就用 pip 了么?

那就别用 venv 环境了,直接用 pyenv 好了。

venv 新版本都是默认 ignore 后安装的了 新环境是干净的也就是没有更新的。

回到顶部