NumPy 官方不提供 numpy-min 包,它并非 PyPI 上的合法包,而是第三方过时 fork 或误传命名;真正减重应禁用 OpenBLAS 并构建轻量版 NumPy。

为什么 numpy-min 不是官方推荐方案
NumPy 官方从不提供 numpy-min 这个包——它不在 PyPI 上,也不是 NumPy 项目维护的发布产物。你在搜索中看到的 numpy-min,大概率是第三方非官方构建、已过期的 fork(比如 2022 年前的某个精简分支),或误传的命名(如把 numpy==1.22.4 + 手动 patch 后的本地 wheel 误称为 “min” 版)。直接 pip install numpy-min 会报 ERROR: Could not find a version that satisfies the requirement numpy-min,这是必然结果。
真正可控的精简路径:禁用 OpenBLAS + 构建轻量 numpy
Windows 下 PyInstaller 打包后体积暴增(比如多出 36 MiB 的 libopenblas64__v0.3.23-xxx.dll),核心问题不是 NumPy 本身,而是其默认链接的 OpenBLAS 数值库。禁用它,才是实打实减重的关键。
- 在源码根目录新建
site.cfg,内容仅三行:[openblas] libraries= library_dirs= include_dirs=
- 确保用干净虚拟环境(不用 Anaconda!):
python -m venv .venv && .venv\Scripts\activate - 安装构建依赖:
pip install setuptools wheel cython - 对于 NumPy ≥1.25.x,必须改用
cibuildwheel或手动调用python -m build --wheel --no-isolation,否则python setup.py build会在 Windows 上静默失败(命令行超长) - 构建完成后,
pip install dist\numpy-*.whl安装本地 wheel,再用pyinstaller打包,即可跳过 OpenBLAS 二进制
打包时绕不开的兼容性陷阱
禁用 OpenBLAS 后,np.dot、np.linalg.svd 等函数仍能运行,但底层退回到纯 C 实现(如 netlib),性能下降明显——这对后台计算密集型程序是硬伤,但对仅做简单数组拼接、索引、基础统计的工具类脚本完全够用。务必确认你的使用场景是否属于后者。
图片提示词生成器?不止如此。 马甲系统 —— 把脑海中的画面,翻译成AI能理解的专业表达。 用得越多,它越懂你:首次需要多问几句确认方向,用久了几乎一说就懂。 用得越多,它越快:缓存机制让后续对话越来越省。 RAG进化:成功案例持续入库,越跑越聪明。 输入「新手指南」查看完整功能介绍
- 不要指望
--exclude-module openblas生效:PyInstaller 不识别该模块名,它压根不会“找到并排除”,只会照常打包所有被 numpy 动态加载的 DLL -
--upx对 OpenBLAS DLL 压缩率极低(UPX 不擅长压缩 already-optimized 二进制),别把它当主力手段 - 用
pyinstaller --onefile时,最终 EXE 解压到临时目录的行为会让 OpenBLAS DLL 再次暴露——禁用才是源头解法,不是藏起来
更轻但更受限的替代方案
如果连轻量 numpy 都嫌重,且你只用到 np.array、np.arange、np.where 等极少数功能,可考虑替换为 array(标准库)+ itertools + 手写简单广播逻辑。但这意味着放弃 np.ndarray 的全部语义(如 a + b 自动广播、切片视图等),工程成本陡增,仅适合超小工具脚本。
立即学习“Python免费学习笔记(深入)”;
真正的减重关键,从来不是找一个叫 “min” 的幻影包,而是看清你到底用了 NumPy 的哪一层能力——然后砍掉它背后最重的那块砖。

















