确保 pip 可用的最小可行操作链是:先验证虚拟环境 python 可执行,再运行 .venv/bin/python -m ensurepip --upgrade --default-pip(linux/macos)或 .venv/scripts/python.exe -m ensurepip --upgrade --default-pip(windows),最后用 .venv/bin/python -m pip --version 验证。

直接结论:不是 ensurepip 坏了,而是它根本没被启用或压根不存在——别重装 Python,先用 python -m ensurepip --upgrade 试一遍。
venv 创建时提示 “ensurepip not available” 或 “Command 'ensurepip' returned non-zero exit status 1” 怎么办
这个报错说明 venv 在创建完基础环境后,试图自动安装 pip(通过 ensurepip),但失败了。常见于 Windows 下的 Python 3.6.3 精简包、某些企业定制版 Python,或 Python 3.12+ 配合 uv venv 的场景。
- 先确认你用的是标准 CPython 安装包(官网 python.org 下载),而非 Microsoft Store 版、Anaconda 自带版或学校/公司分发的阉割版
- 运行
python -c "import ensurepip; print(ensurepip.__file__)",如果报ModuleNotFoundError,说明ensurepip模块确实缺失 - 如果是
uv venv .venv创建的环境,这属于正常行为:uv默认不预装 pip,ensurepip不是“不可用”,而是“没被调用”
python -m ensurepip --upgrade 执行失败的三种典型原因
即使模块存在,python -m ensurepip --upgrade 也可能卡住或报错。核心问题不在命令本身,而在执行上下文:
python-docx Skill功能概述python-docx Skill是一项面向实际任务的技能,主要用于本Skill提供使用python-docx生成专业Word文档的标准方法和最佳实践;生成安全服务方案文档;核心要点生成技术架构设计文档;生成任何需要专业排版的Word文档;核心库 : python-docx;使用与执行辅助库 : docx.shared , docx.enum , docx.oxml.ns;标准代码模板;1. 文档初始化;2. 字体设置(必须!它将相关步骤、工具调用和结果整理方式集
-
网络被拦截:ensurepip 默认会尝试下载 pip wheel 包,若公司防火墙或代理阻断了 pypi.org,就会超时失败。此时加
--default-pip参数可跳过下载,改用内置静态包 -
权限不足:尤其在 Windows 上以普通用户运行,而 Python 安装在
C:\Program Files\下,Scripts 目录可能受保护。建议用管理员 PowerShell 运行,或改用用户级安装路径(如C:\Users\YourName\python312) -
路径残留冲突:比如你移动过 Python 安装目录,但
Scripts\pip.exe里硬编码的 Python 解释器路径还是旧的。此时python -m ensurepip可能因找不到解释器而崩溃
确保 pip 可用的最小可行操作链
不要依赖 pip 命令本身,从最底层验证并绑定解释器:
- 激活虚拟环境后,先运行
.venv\Scripts\python.exe -c "print('ok')"(Windows)或.venv/bin/python -c "print('ok')"(macOS/Linux),确认 Python 可执行 - 再运行
.venv\Scripts\python.exe -m ensurepip --upgrade --default-pip(Windows)或.venv/bin/python -m ensurepip --upgrade --default-pip(其他系统) - 验证 pip 是否就位:
.venv\Scripts\python.exe -m pip --version—— 这比pip --version更可靠,绕过了 PATH 和启动器 exe 的干扰 - 安装包时也坚持用
.venv\Scripts\python.exe -m pip install requests,避免任何 alias / PATH 污染
什么时候该放弃修复、直接重建环境
如果你发现 venv 目录下 Scripts(Windows)或 bin(macOS/Linux)里连 python.exe 或 python 都打不开,或者 lib\site-packages 是空的,那就不是 ensurepip 的问题了。
- 整个虚拟环境很可能被手动复制、剪切过,或磁盘损坏导致文件元数据丢失
- PyCharm 中点击 “Show in Explorer” 后看到路径里有中文、空格、符号(如
&、#),也容易触发 ensurepip 内部路径解析失败 - 此时最省时间的做法是删掉整个
.venv(或venv)目录,用原始 Python 解释器重新跑一遍python -m venv .venv
复杂点在于:ensurepip 不是独立工具,它和 Python 解释器版本强绑定;你不能拿 Python 3.12 的 ensurepip 去修一个 3.9 的 venv。所以别跨版本折腾,环境坏了就重建,这是 Python 虚拟环境设计的本意。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










