Python创建虚拟环境一直转圈卡死怎么办
针对Python创建虚拟环境一直转圈卡死的问题,本文提供一套两分钟快速定位与分步排查方案。涵盖命令行--without-pip旁路测试、PyCharm与VS Code外置环境解耦、云同步盘文件锁排查及pip镜像配置,彻底解决环境初始化假死问题。
创建 Python 虚拟环境时界面一直转圈卡死,通常并非 Python 安装受损,而是卡在了“内置 pip 引导程序的网络下载与校验”、“集成开发工具(IDE)后台文件索引与并发锁冲突”,或是“目标路径位于云同步盘中导致文件实时写入被挂起”。要彻底解决这一问题,核心路径是:先通过命令行加入 --without-pip 参数进行隔离验证,确认底层解释器与磁盘写入正常后,再针对性修复网络镜像源、调整安全防护白名单,或采用外置创建后关联 IDE 解释器的方式避开图形界面死锁。
一、两分钟排查法:快速定位卡死瓶颈
当遇到虚拟环境长时间无响应时,不要盲目重装 Python。首先需要区分是图形开发工具(如 PyCharm、VS Code)的交互界面出现假死,还是 Python 核心进程在执行文件复制时陷入停滞。最直接的方法是打开系统自带的终端(Windows 的 PowerShell 或 CMD,macOS/Linux 的 Terminal),脱离任何第三方工具直接测试环境创建。
请在终端中切换到非中文、无空格的本地工作目录,执行以下测试命令:
python -m venv test_env --without-pip
执行该命令后观察终端反应,结果通常分为两类:
- 情况一:1 秒内迅速执行完毕,返回空提示符。这说明操作系统的 Python 解释器、磁盘读写和基础目录结构生成功能完全健康。卡死的根源 100% 集中在
ensurepip模块(即自动配置 pip 工具时的网络握手、解包校验)或安全软件对可执行文件的逐个拦截扫描。 - 情况二:光标持续闪烁,超过 30 秒仍未结束。这说明底层文件写入流程本身受阻。常见于工作目录被 OneDrive、iCloud、坚果云等云盘同步软件锁定,或是杀毒软件对脚本写入进行了深层挂起,亦或是当前路径存在特殊权限冲突。
二、原因一:ensurepip 引导机制阻塞与国内网络延迟
在 Python 默认机制中,执行 python -m venv <env_name> 时,程序会自动调用 ensurepip 模块。该模块负责将 Python 安装目录中预置的 wheel 格式的 pip 与 setuptools 解压到新环境的 site-packages 目录中,并在 Windows 下生成 pip.exe、python.exe 等启动存根(stubs)。
在这个过程中,如果当前系统设置了代理服务器(例如系统环境变量中残留了未开启的 HTTP_PROXY 或 HTTPS_PROXY),或者网络防护软件对 socket 握手进行了阻断,ensurepip 在某些系统版本下会反复尝试网络探针或验证远端哈希,从而陷入数十秒甚至二十分钟的 TCP 超时重试循环。
对于此问题,最为稳妥且立竿见影的解决办法是“绕过内嵌引导,外接国内镜像完成配置”:
第 1 步:用纯净模式秒级创建环境骨架
python -m venv .venv --without-pip
第 2 步:激活该虚拟环境
Windows PowerShell 环境下执行:
.venv\Scripts\Activate.ps1
如果系统提示脚本执行权限策略受限(Restricted),可执行:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
.venv\Scripts\Activate.ps1
macOS 或 Linux 终端下执行:
source .venv/bin/activate
第 3 步:通过官方独立脚本配合国内镜像补全 pip
在已激活的环境提示符下,下载并运行官方单文件安装脚本:
curl -sS https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py -i https://pypi.tuna.tsinghua.edu.cn/simple
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting pip
Installing collected packages: pip
Successfully installed pip-24.0
安装完成后即可删除临时的 get-pip.py。此时虚拟环境已具备完整可用的 pip 工具,全程无需等待官方默认源的漫长握手。
三、原因二:IDE 图形界面与后台索引的死锁互锁
很多开发者在 PyCharm 中点击“New Project”或在 VS Code 中点击“Create Environment”时,界面右下角显示“Creating virtual environment...”,进度条一直转圈,有时持续半小时都不结束。
这种现象通常源于 IDE 的并发机制冲突。PyCharm 在调用底层 Python 创建虚拟环境的同时,会自动触发“更新包清单(Updating packages)”与“扫描解释器骨架(Scanning skeletons)”。如果此时工作区内包含大型数据文件夹、庞大的 node_modules 或已被其他进程占用的缓存文件,IDE 的事件分发线程会被阻塞,导致新建环境的返回事件无法被上层 UI 接收,形成界面假死。
针对 IDE 图形界面卡死,规范且高效的应对策略是“解耦操作:外置创建,内部关联”:
- 终止卡死任务:在任务管理器(Windows)或活动监视器(macOS)中强制结束卡住的
python.exe或pycharm64.exe辅助进程。 - 外部终端独立创建:关闭 IDE 后,在项目根目录下通过系统原生终端直接运行:
如果此处也有延迟,沿用前文所讲的python -m venv .venvpython -m venv .venv --without-pip。 - 打开 IDE 绑定现有解释器:
重新打开 PyCharm,依次点击:
Settings(设置 / Preferences)→Project: <项目名>→Python Interpreter。 在右上角点击Add Interpreter→ 选择Add Local Interpreter...。 在弹出的对话框左侧切勿选择“New”,而是选择 Existing(现有环境)。 - 精确定位可执行文件:
在解释器路径中点击浏览,选中刚才外部生成的 Python 解释器实体:
- Windows 路径为:
项目目录\.venv\Scripts\python.exe - macOS/Linux 路径为:
项目目录/.venv/bin/python
- Windows 路径为:
四、原因三:文件系统死锁(云同步盘与杀毒防护拦截)
如果使用 python -m venv test_env --without-pip 在纯命令行下依然卡死,问题必定发生在文件系统的底层 I/O 层面。在此类场景中,最常见的两大元凶是云盘同步冲突与杀毒软件实时防护扫描。
1. 云盘同步锁冲突(OneDrive / iCloud / 坚果云)
在 Windows 10/11 默认配置下,“桌面”和“我的文档”通常会被自动重定向至 OneDrive 备份目录。虚拟环境的创建过程会在短时间内释放数百至数千个微小文件(包括链接、配置文件和动态库)。
当 Python 正在写入某个 .dll 或 .py 文件时,云盘同步客户端会立即感知并尝试锁定该文件以上传至云端。此时 Python 进程由于拿不到写句柄,直接陷入等待(挂起),从而导致整个创建过程无限期卡死。
切勿将项目目录或虚拟环境放置在 C:\Users\<用户名>\OneDrive\... 或类似同步盘路径中。建议将所有代码项目建立在纯本地盘符根目录,例如 D:\Projects\my_app 或 macOS 的 ~/Development/my_app。
2. 安全防护软件的实时扫描挂起
Windows Defender 或第三方杀毒软件(如 360、火绒、迈克菲)的“实时保护”机制会对每次新创建的 .exe 存根和脚本进行静态安全特征分析。在多核心高负载或特定系统补丁下,扫描队列积压会导致 Python 的文件写入被串行化阻塞。
解决步骤:
- 按下
Win + I打开“Windows 设置” → 进入“隐私和安全性” → “Windows 安全中心”。 - 点击“病毒和威胁防护” → 在“‘病毒和威胁防护’设置”中选择“管理设置”。
- 下拉找到“排除项” → 点击“添加或删除排除项”。
- 添加两处排除项:一处为 Python 的全局安装路径(如
C:\Program Files\Python311),另一处为你日常存放代码的主文件夹(如D:\Projects)。
五、Conda 环境专解:Solving Environment 卡死应对
如果使用的是 Anaconda 或 Miniconda,在执行 conda create -n myenv python=3.10 时,控制台经常卡在 Solving environment: \ 并无限旋转。这主要是因为 Conda 官方默认源(defaults channel)位于境外服务器,且 Conda 老旧的经典依赖解析器(Classic Solver)在面对庞大的元数据时算法复杂度较高。
对于 Conda 用户,可以通过以下两个步骤彻底根治卡死:
第一步:配置国内高性能镜像源
在终端中依次执行以下命令,将清华源注入配置文件:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --set show_channel_urls yes
第二步:启用现代 libmamba 解析器
较新版本的 Conda(23.10+)已经原生内置了由 C++ 编写的 libmamba 解析器,依赖解析耗时可从数十分钟缩减至数秒:
conda config --set solver libmamba
设置完毕后再次执行创建命令,即可秒级通过 Solving environment 阶段。
如果你不需要庞大的科学计算二进制闭源包,仅需标准 Python 虚拟环境,可以尝试新一代 Rust 构建的高性能工具 uv。执行 uv venv 创建一个虚拟环境仅需 10~50 毫秒,且原生兼容 pip,能够从根本上消除等待与转圈。
六、创建结果校验与核心处置矩阵
当虚拟环境顺利完成生成后,切勿直接开始编码。建议通过以下三步快速验收环境的健壮性:
- 检查目录完整性:确保目标文件夹下存在
pyvenv.cfg核心配置文件,且Scripts(Windows)或bin(macOS/Linux)下有python与pip实体。 - 验证激活与路径指向:在终端激活该环境后,执行路径定位命令:
确认输出的首行路径严格指向你的虚拟环境文件夹(如# Windows where python # macOS / Linux which python.../.venv/Scripts/python.exe),而非全局 Python 路径。 - 验证包管理通信:执行
python -m pip list,若能正常打印出基础包列表(如 pip、setuptools),且不报任何网络或 SSL 警告,即表示环境完全交付就绪。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









