直接查PyPI下载页的wheel文件名,若无cp312等匹配当前Python版本、平台及ABI的文件,说明官方尚未发布支持;此非网络或权限问题,而是PyPI确实无对应预编译包。

pip install 报“No matching distribution found”时怎么定位
这不是网络或权限问题,而是 PyPI 上根本没有匹配你 Python 版本、平台和 ABI 的 wheel。直接查 torch、h5py 这类 C 扩展包的发布页(如 PyPI 页面的 “Download files” 标签),看有没有 *cp312* 开头的文件。没有就说明官方还没提供 Python 3.12 支持。
看到 ValueError: path '.../h5py/_conv.c' cannot be absolute 怎么办
这是 h5py 3.10.0 及更早源码包与 Python 3.12 默认 setuptools ≥68.0 的构建冲突,不是你环境的问题。错误本质是 MANIFEST.in 中写了绝对路径,新版 setuptools.command.egg_info 直接拒绝。
- 不建议临时打补丁或降级 setuptools——可能引发其他依赖问题
- 避免用
pip install --no-binary=h5py h5py强制源码编译,大概率失败 - 最稳路径是换 Python 版本:h5py 官方 wheel 对 Python 3.10 支持最完整,3.11 次之,3.12 尚未覆盖
importlib.metadata.version() 返回 ModuleNotFoundError 怎么排查
importlib.metadata 查的是已安装分发包的 dist-info 目录,不是 import 路径。如果装了 h5py 却调用 version("h5py") 报错,说明 wheel 根本没装成功,或者装到了另一个环境里。
- 确认当前 Python 解释器路径:
python -c "import sys; print(sys.executable)" - 检查该解释器 site-packages 下是否存在
h5py-*.dist-info目录 - 别混淆
h5py(导入名)和h5py(分发包名)——这里二者一致,但像inferencesh包导入名是inferencesh,分发包名也是它;而importlib-metadata包导入名却是importlib.metadata
为什么 pyenv/conda 切 Python 版本比改系统 Python 更可靠
Python 3.12 的 C 扩展兼容性问题不是孤立的,torch、numba、scipy 等都面临同样节奏:官方 wheel 发布滞后于 Python 新版发布。硬在 3.12 上折腾单个包,容易陷入“修一个、崩三个”的循环。
立即学习“Python免费学习笔记(深入)”;
- pyenv 或 conda 能隔离
site-packages和编译工具链,避免 setuptools / wheel 版本污染全局 - 不同项目可指定不同 Python 小版本(如一个用 3.10.12 跑 h5py + torch,另一个用 3.12.3 跑纯 Python 工具链)
- Windows 用户尤其要注意:Microsoft Store 版 Python 不支持 pyenv,优先选官网 offline installer + conda


















