venv创建慢的主因是默认自动安装/升级pip和setuptools,弱网或旧镜像源下易卡在“installing pip...”;解决方法为python 3.9+用--without-pip跳过,再手动配国内源安装。

python -m venv 创建虚拟环境本身不慢,但你感觉“太慢”,大概率是因为它默认会自动安装/升级 pip 和 setuptools——而这一步在弱网、旧镜像源或离线环境下极易卡住或超时。
venv 创建卡在 pip 安装阶段怎么办?
venv 默认行为是调用 ensurepip 模块安装 pip。这个过程会:
- 下载 pip 的 bootstrapping wheel(约 2–3 MB)
- 解压并安装到新环境
- 再顺带升级 setuptools 和 wheel(可选但默认开启)
如果网络不稳定或 pip 源响应慢,终端可能停在 Installing pip... 十几秒甚至更久,看起来就是“创建慢”。
解决方法很简单:跳过 pip 自动安装,后续按需手动配。
- 创建时不安装 pip:
python -m venv myenv --without-pip
- 创建后手动安装(用你配置好的国内源):
source myenv/bin/activate # Linux/macOS<br>curl <a href="https://www.php.cn/link/e8e5f71237c3b05761cda9e029a5b3d2">https://www.php.cn/link/e8e5f71237c3b05761cda9e029a5b3d2</a> | python
- 或者直接用已缓存的 pip wheel(如果你有本地 pip 包缓存):
python -m pip install --find-links /path/to/wheel/dir --no-index pip
注意:--without-pip 是 Python 3.9+ 才支持的参数;3.6–3.8 需改用:
python -m venv --clear myenv && touch myenv/pyvenv.cfg再手动补 bin/activate 脚本,不推荐——直接升级 Python 更省事。
为什么 venv 在某些机器上创建特别慢?
除了 pip 下载,还有两个常被忽略的底层原因:
-
文件系统延迟高:比如在 WSL2 + NTFS 挂载目录、或加密磁盘(如 macOS FileVault 启用时)、或远程 NFS 卷里运行
venv,大量小文件写入(lib/python3.x/ 目录含数百个 .pyc)会显著拖慢。 -
杀毒软件实时扫描:Windows 上某些安全软件会对
Scripts/下新生成的python.exe、pip.exe做全量扫描,导致激活前就卡顿。
验证方式:
- 在 tmpfs 或 SSD 本地目录(如
/tmp/mytest)试一次:time python -m venv /tmp/testenv --without-pip
如果秒级完成,说明是路径 I/O 问题。
临时规避:
- Linux/macOS:用
mktemp -d创建临时目录再建环境; - Windows:避免在 OneDrive/Google Drive 同步目录、NTFS 压缩文件夹内操作。
venv 创建后首次 pip install 还是慢?配对优化
即使 venv 创建快了,第一次 pip install 可能仍慢——因为 pip 默认没走缓存、也没设镜像源。
必须做三件事:
- 确保 pip 已升级:
python -m pip install --upgrade pip
- 配置国内镜像源(永久):
pip config set global.index-url <a href="https://www.php.cn/link/a6455ffc4e47fd737db213366771ec0e">https://www.php.cn/link/a6455ffc4e47fd737db213366771ec0e</a>
- 开启 pip 缓存(默认已开,但可确认):
pip cache info
→ 查看Cache directory是否可写
额外提速技巧:
- 安装多个包时加
--no-deps跳过依赖解析(仅调试用); - 用
pip install -r requirements.txt --prefer-binary强制用预编译 wheel,避免源码编译。
真正影响体验的不是 venv 命令本身,而是它触发的后续链式动作:网络下载、I/O 写入、安全扫描、依赖解析。每个环节都可能成为瓶颈,而它们又各自有独立的开关和配置点。漏掉任意一个,都可能让你反复觉得“怎么又卡住了”。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











