Python3 -m venv 创建的虚拟环境里默认安装的 setuptools 模块为什么是旧版的?
另外,现在每次创建一个虚拟环境,我都要在虚拟环境里安装一次 flake8 和 yapf 模块,我的系统环境已经安装了这 2 个模块,有没有什么办法能不共享系统环境, 又能直接使用这 2 个模块?
Python3 -m venv 创建的虚拟环境里默认安装的 setuptools 模块为什么是旧版的?
4 回复
老的 venv 可以 --use-system-package 我记得。
这是因为 Python 的 venv 模块在创建虚拟环境时,会从标准库的 ensurepip 中复制一个“引导”版本的 pip 和 setuptools。这个引导版本是 Python 发行版自带的,为了保证环境创建过程不依赖网络且绝对可靠,它通常不是最新版。
你可以通过一个简单的命令验证和升级它:
# 激活你的虚拟环境后,运行:
python -m pip install --upgrade pip setuptools
这其实是设计使然,不是 bug。
venv 里难道不是直接就用 pip 了么?
那就别用 venv 环境了,直接用 pyenv 好了。
venv 新版本都是默认 ignore 后安装的了 新环境是干净的也就是没有更新的。

