应强制使用预编译wheel安装:pip install --only-binary=scipy scipy;若失败则先升级工具链(pip install -U pip setuptools wheel),Windows用户优先用conda install scipy。

pip install scipy 时卡死或报 MemoryError
这不是内存真不够,而是 pip 尝试从源码编译 scipy,过程中临时对象(如 Fortran 目标文件、BLAS 接口中间表示)堆积在内存里,尤其在 Windows 或低内存机器上极易触发 MemoryError 或 OSError: [Errno 12] Cannot allocate memory。
- 根本原因:scipy 的
pyproject.toml要求构建系统(如setuptools+numpy+cython)协同工作,而旧版 pip 不支持并行构建控制,导致多进程编译争抢内存 - 最直接的解法是跳过源码编译,强制用预编译 wheel:
pip install --only-binary=scipy scipy - 如果仍失败,说明本地 pip 或 setuptools 太旧——升级到最新:
pip install -U pip setuptools wheel(pip >= 23.0才能可靠处理 scipy 1.12+ 的构建逻辑) - Windows 用户额外注意:不要用
pip install scipy直接装,优先走conda install scipy(conda-forge 提供完整 BLAS 链接的二进制包,零编译)
pip install pandas 报错 “numpy.dtype size changed” 并伴随 MemoryError
这个错误本质是 numpy 二进制不兼容,但触发时机常在安装 pandas 时因内存压力放大——因为 pandas 编译阶段会反复 import numpy 做 ABI 检查,若 numpy 版本混杂(比如 conda 安装的 numpy 和 pip 安装的混在一起),检查过程会分配大量 dtype 描述结构体,最终爆内存。
- 先清掉所有 numpy 变体:
pip uninstall numpy -y && conda remove numpy -y(二者选其一,别共存) - 再统一安装:用
pip install "numpy<2.0" pandas(pandas 2.2+ 尚未完全适配 numpy 2.x 的新 ABI) - 若用 conda,必须指定 channel:
conda install -c conda-forge pandas(避免 defaults channel 的旧 numpy 冲突) - 验证是否干净:
python -c "import numpy; print(numpy.__version__, numpy.__file__)",确保路径唯一、版本一致
虚拟环境中 pip install pandas/scipy 占满 swap 并卡住
现象是磁盘灯狂闪、CPU 低于 10%、pip 进程 RSS 内存不动但 VIRT 持续涨到几十 GB——这其实是链接器(ld 或 Windows 的 link.exe)在做符号解析时 mmap 了大量 .o 文件,但没真正加载,操作系统用 swap 撑住,看起来像“内存溢出”。
快速生成专业的 Python 脚本和应用代码。一键创建完整项目结构,支持CLI、API、爬虫、Bot、Django等多种项目类型,包含完整的项目结构、配置文件、依赖管理、测试、README和文档。
- 临时缓解:Linux 下限制链接器内存:
export LDFLAGS="-Wl,--no-keep-memory",再 pip install - 更稳妥的做法:禁用编译,只装 wheel:
pip install --no-build-isolation --only-binary=all pandas scipy - Mac 上常见于 Apple Silicon(arm64)+ Rosetta 混用,此时必须加
--force-reinstall --no-deps,再单独装numpy和scipy的 arm64 wheel - 别信
pip --upgrade pip能解决——它只更新 pip 自身,不修复已污染的 site-packages
用 pip install -r requirements.txt 时单个包爆内存,其他正常
问题不在 pip 或网络,而在依赖顺序。比如 requirements.txt 里先写 scipy==1.12.0 再写 numpy==1.26.4,pip 会先装 scipy(此时 numpy 还没装),触发 scipy 自带的 numpy 引导逻辑,反复下载/编译/回滚,内存越滚越大。
立即学习“Python免费学习笔记(深入)”;
- 永远把
numpy放 requirements.txt 第一行 - 显式锁定 scipy/pandas 的 wheel 兼容版本:
numpy>=1.24.0,<2.0、scipy>=1.11.0,<1.13.0 - 加
--find-links https://pypi.org/simple/ --trusted-host pypi.org避免 pip 在镜像源间反复跳转拉取元数据 - 实在不行,拆成两步:
pip install -r requirements-numpy-first.txt && pip install -r requirements-rest.txt

















