先判断是不是同一个错误
安装 QtFusion 或者执行项目里的依赖安装命令时,如果终端最后停在IMcore,基本就是同一类问题:
最有辨识度的是这句:
No matching distribution found for IMcore有些项目报的是IMcore==0.2.7,有些安装 QtFusion 时会继续解析IMcore>=0.3.1。版本号不完全一样,但故障点相同:QtFusion 需要 IMcore,pip 找不到可用的 IMcore,于是安装被中断。
可以先用下面这张表快速对号入座:
| 看到的现象 | 说明 |
|---|---|
from versions: none | pip 没从索引中拿到 IMcore 候选版本 |
IMcore==0.2.7 | 旧项目把 IMcore 固定到了历史版本 |
IMcore>=0.3.1 | 安装 QtFusion 时触发了它的依赖解析 |
| 前面很多包都安装了,最后才失败 | Python 环境不一定有问题,重点看 IMcore |
这不是 QtFusion 不能用了
这里要先把责任链分清楚:
安装 QtFusion -> pip 读取 QtFusion 依赖 -> 继续寻找 IMcore -> IMcore 当前无法从 PyPI 索引正常取得 -> 安装失败也就是说,QtFusion 本身仍然是可用的,真正断掉的是它的依赖包IMcore。当前访问 PyPI 的IMcoresimple 索引会返回找不到项目:
所以这个错误不能只靠换清华源、阿里源、豆瓣源解决。镜像源只是同步 PyPI 的结果,源头项目不可用了,换镜像通常还是会失败。
一个简单判断方法是:如果报错行里明确出现IMcore,先按 IMcore 依赖缺失处理;如果后面才出现 OpenCV、PySide6、Pillow 等其它库的错误,再单独处理那些库。
方案一:项目里有 requirements.txt
先看你是不是通过依赖文件安装。如果命令类似下面这样:
pipinstall-rrequirements.txt就先打开requirements.txt,搜索IMcore。旧项目里通常会看到:
IMcore==0.2.7把这一整行删掉,替换为:
IMcore @ https://files.pythonhosted.org/packages/90/2e/3a8786ad2e1ae77e7f58fe8e1acb99944ead6c367eb085606633197035d6/IMcore-0.3.1-py3-none-any.whl注意不要漏掉IMcore后面的空格、@和网址。保存后重新跑一遍安装:
pipinstall-rrequirements.txt这样做的关键点是绕开包名检索。pip 不再问 PyPI “有没有 IMcore 这个项目”,而是按你给出的 wheel 地址取文件。
不建议先做的事
遇到这个错误,下面几种操作通常帮不上忙:
- 反复切换 PyPI 镜像源;
- 删除整个 Python 环境后重装;
- 把 QtFusion 降级到更老版本;
- 只执行
pip install --upgrade pip后继续原命令。
这些做法没有触及断点。断点是 IMcore 取不到,所以修复时要么给 pip 一个可用 wheel,要么换到不再卡这个历史依赖的升级包。
方案二:先装 IMcore,再装 QtFusion
如果你没有requirements.txt,或者只是想在当前 Python 环境里把缺失包补上,可以先执行:
pipinstall"IMcore @ https://files.pythonhosted.org/packages/90/2e/3a8786ad2e1ae77e7f58fe8e1acb99944ead6c367eb085606633197035d6/IMcore-0.3.1-py3-none-any.whl"然后再安装 QtFusion:
pipinstallQtFusion如果远程 wheel 下载不下来,也可以使用配套提供的本地 wheel 文件。资源包解压后会看到一个关键文件:
imcore-0.3.1-py3-none-any.whl.whl文件不要再解压,直接安装它:
pipinstall.\imcore-0.3.1-py3-none-any.whl pipinstallQtFusionLinux 或 macOS 写成:
pipinstall./imcore-0.3.1-py3-none-any.whl pipinstallQtFusion方案三:换到 VibeFlux
如果这个项目后面还要继续改、继续部署,建议直接考虑VibeFlux。它是作者发布的 QtFusion 全新升级可替换版本,安装链路更顺:
安装:
pipinstallVibeFlux迁移时只需要把导入包名换掉:
importQtFusion改为:
importVibeFlux如果代码里是:
fromQtFusion.xxximportSomeClass就对应改成:
fromVibeFlux.xxximportSomeClass其它类名、函数名和调用方式保持原来的写法即可。
这条路线适合新环境、新机器或准备长期使用的项目。短期补装 wheel 能解决眼前安装问题,但后续如果频繁重装环境,还是迁移到 VibeFlux 更干净。
一句话选择
只想让旧项目今天跑起来:改requirements.txt或先安装 IMcore wheel。
项目还要长期维护:优先迁移 VibeFlux,少碰已经失效的 IMcore 索引。
参考
https://pypi.org/simple/imcore/https://pypi.org/simple/qtfusion/https://pypi.org/simple/vibeflux/https://files.pythonhosted.org/packages/90/2e/3a8786ad2e1ae77e7f58fe8e1acb99944ead6c367eb085606633197035d6/IMcore-0.3.1-py3-none-any.whl