requirements.txt 文件格式必须严格,仅支持 requests、requests==2.31.0、requests>=2.28.0 三种写法,禁用注释、等号误用、多余等号及未引号的中文/空格路径。

requirements.txt 文件格式必须严格,否则 pip install -r 会报错
pip 不会自动解析注释、空行或不规范的包声明。常见错误包括:numpy # latest(带注释)、scipy=1.10.0(用错等号)、torch===2.0.1(多了一个等号)、路径里有中文或空格未加引号。
正确写法只接受三种形式:requests(最新版)、requests==2.31.0(精确版本)、requests>=2.28.0,(范围约束)。所有行末不能有空格,文件编码必须是 UTF-8(无 BOM)。
- 用 VS Code 或 Notepad++ 打开文件,确认右下角显示 “UTF-8” 而非 “UTF-8-BOM”
- 避免在 PyCharm 中直接右键 → New → File 创建,容易带隐藏字符;建议用终端 touch 或 echo 生成
- Windows 下路径含空格时,命令要写成:
pip install -r "D:\my project\requirements.txt"
pip install -r 执行前必须确认当前 Python 环境和 pip 版本
同一台机器可能有多个 Python 解释器(如系统 Python、conda env、pyenv),pip install -r 默认作用于当前 shell 激活的环境。如果没激活虚拟环境,可能装到全局 site-packages,导致污染或权限错误(尤其 Windows 上报 PermissionError)。
执行前务必检查:which python(macOS/Linux)或 where python(Windows),再运行 python -m pip --version 确认 pip 绑定的是哪个 Python。
- 推荐始终用
python -m pip install -r requirements.txt,避免 pip 和 python 版本不一致 - 若用 conda,优先用
conda env create -f environment.yml,而非 pip;混用时注意pip install后 conda list 可能不显示 - 遇到
ERROR: Could not find a version that satisfies the requirement xxx,大概率是包名拼错,或该版本已从 PyPI 移除(如旧版tensorflow-gpu)
离线安装或受限网络下,不能只靠 pip install -r
pip install -r requirements.txt 默认联网拉取包。若目标机器无外网(如内网服务器),直接运行会卡住或报 ConnectionError。必须提前下载好 wheel 或 sdist 包。
正确做法分两步:先在有网机器上下载依赖树,再复制到目标机安装。
- 下载全部包(含依赖):
pip download -r requirements.txt --no-deps --platform manylinux2014_x86_64 --abi cp39 --only-binary=:all:(按目标环境调整 platform/abi) - 若只需源码包且不编译:
pip download -r requirements.txt --no-binary :all: - 离线安装:
pip install --find-links ./downloads --no-index -r requirements.txt,其中./downloads是存放 wheel 的目录
install -r 过程中中断或部分失败,不会自动回滚
pip 没有事务机制。如果安装中途 Ctrl+C 或某个包编译失败(如 pycryptodome 缺少 gcc),已成功安装的包仍留在环境中,后续重试会跳过它们 —— 但依赖关系可能已损坏(比如 A 依赖 B,B 安装失败,A 却装上了)。
这不是 bug,是 pip 的设计逻辑:它按顺序逐个 install,不校验最终一致性。
- 安全做法:先用
pip install --dry-run -r requirements.txt(pip ≥ 23.3)预检兼容性(但不保证 100% 成功) - 更可靠的是用虚拟环境隔离:
python -m venv .venv && source .venv/bin/activate(Linux/macOS)或.venv\Scripts\activate(Windows),再 install - 装完立刻验证:
python -c "import numpy, pandas; print('OK')",比单纯看 “Successfully installed” 更实在
真正麻烦的不是命令本身,而是 requirements.txt 里某一行看着正常,却因平台差异(Windows/macOS)、Python 版本(3.8 vs 3.12)、或上游包删版而静默失败。每次换环境都值得重新跑一遍 pip install --upgrade pip 再执行。











