mac m1pro [ PyQtchart模块安装问题 ] Library not loaded: @rpath/QtCharts.framework/Versions/5/QtCharts

一、基本环境

MacBook m1pro,python3.9,已安装pyqt5和pyqtchart。

二、问题

但是调用QtChart的时候一直报以下错误:

Traceback (most recent call last):  ……in <module> from PyQt5.QtChart import QDateTimeAxis, QValueAxis, QSplineSeries, QChart ImportError: dlopen(/Users/……/miniconda3/envs/……/lib/python3.9/site-packages/PyQt5/QtChart.abi3.so, 0x0002): Library not loaded: @rpath/QtCharts.framework/Versions/5/QtCharts Referenced from: <3E48343C-E1D4-377F-AA0A-D79048B89F52> /Users/……/miniconda3/envs/……/lib/python3.9/site-packages/PyQt5/QtChart.abi3.so

但我实际上已经下载了PyQtChart包,并且可以输出版本号。

从多个搜索结果来看,这个问题通常有几个关键原因:可能是QtCharts模块没有正确安装;可能是环境变量配置问题导致系统找不到路径;也可能是版本不兼容问题。

首先需要检查Qt的安装情况。在Linux/macOS系统中,QtCharts通常需要单独安装。我安装了PyQtChart这个Python绑定包,但看报错原因是缺少底层的QtCharts C++库。

三、分步解决方案

1. ​检查 QtCharts 库实际路径,查找 QtCharts.framework 是否存在
# 查找 QtCharts.framework 是否存在
find /Users/用户名称/miniconda3/envs/环境名称 -name "QtCharts.framework"

如果在这一步find命令检查QtCharts库路径无输出,表明环境中未安装QtCharts的二进制库文件​(QtCharts.frameworklibQt5Charts.dylib)。PyQtChart的Python包(PyQtChart==5.15.7)​仅是QtCharts的Python绑定,若底层Qt库未安装,仅绑定是无法工作的。

  • ✅ 预期输出:
    /env_path/site-packages/PyQt5/Qt5/lib/QtCharts.framework

2. ​​通过Homebrew安装QtCharts核心库

# 安装Qt5(包含QtCharts模块)
brew install qt@5

# 验证QtCharts文件路径
ls /opt/homebrew/opt/qt@5/lib/QtCharts.framework

✅ 应输出:QtCharts(可执行文件)、ResourcesVersions等目录。

3. ​手动配置动态库路径,强制动态链接器优先搜索 PyQt5 自带的 Qt 库目录
# 临时生效(当前终端)
export DYLD_LIBRARY_PATH="/Users/用户名/miniconda3/envs/虚拟环境名称/lib/python3.9/site-packages/PyQt5/Qt5/lib:$DYLD_LIBRARY_PATH"

# 永久生效(添加到 ~/.zshrc)
echo 'export DYLD_LIBRARY_PATH="/Users/用户名/miniconda3/envs/虚拟环境名称/lib/python3.9/site-packages/PyQt5/Qt5/lib:$DYLD_LIBRARY_PATH"' >> ~/.zshrc
source ~/.zshrc
4. ​重装PyQtChart并统一版本

PyQtChart安装最新版,Qt 5.15.10提供二进制库,PyQtChart 5.15.10提供匹配的Python接口。这里建议PyQtChart安装最新版,PyQt5从与PyQtChart相同的版本一路网上 install 直到试到可以成功安装的版本,因为我一开始直接安装PyQt5.15.11跟PyQtChart还是有不兼容的,会报错  note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed,降了版本就好了。

# 卸载冲突的Python包
pip uninstall -y PyQt5 PyQtChart

# 安装严格匹配的版本(需与Qt库版本一致)
pip install PyQt5==5.15.10 PyQtChart==5.15.7
5. ​重装PyQtChart并统一版本
# 确认QtCharts.framework存在
ls /opt/homebrew/opt/qt@5/lib/QtCharts.framework

# 检查PyQtChart绑定的动态库
ls /env_path/site-packages/PyQt5/QtChart.abi3.so

我在这一步,是QtCharts.framework存在,即ls /opt/homebrew/opt/qt@5/lib/QtCharts.framework这一项有输出,但是# 检查PyQtChart绑定的动态库 ls /env_path/site-packages/PyQt5/QtChart.abi3.so这一项没有输出,说明QtCharts.framework存在但QtChart.abi3.so缺失),核心问题在于 ​PyQtChart的Python绑定未正确安装或路径未对齐。

可能原因

  • 安装中断​:PyQtChart安装过程中编译或文件复制失败。
  • 路径错位​:绑定库未生成在PyQt5的标准路径(site-packages/PyQt5/)下。
  • 版本冲突​:PyQtChart与PyQt5版本不匹配导致绑定库生成失败。
6. ​强制重装PyQtChart并指定路径
# 卸载现有包(避免残留)
pip uninstall -y PyQtChart

# 重装并强制包含二进制文件
pip install PyQtChart==5.15.10 --no-cache-dir --force-reinstall

安装好之后重复第5步检查QtChart.abi3.so这个动态库是否存在

  • 关键参数​(这一点很重要,我怀疑之前安装就是因为使用了损坏的缓存包导致的问题):
    --force-reinstall:覆盖安装;--no-cache-dir:避免使用损坏的缓存包。

重新安装之后再重复第五步检查一下QtChart.abi3.so这个动态库是否存在。

# 检查PyQtChart绑定的动态库
ls /env_path/site-packages/PyQt5/QtChart.abi3.so

# 如果返回的是以下样式说明QtChart.abi3.so库已经安装成功
/Users/用户名/miniconda3/envs/虚拟环境名/lib/python3.9/site-packages/PyQt5/QtChart.abi3.so

# 若找到但不在PyQt5目录下,手动复制
cp /found_path/QtChart.abi3.so /Users/用户名/miniconda3/envs/虚拟环境名/lib/python3.9/site-packages/PyQt5/

通过以上步骤就解决了本次问题,mac 做开发还是有很多环境坑要踩的,欢迎大家共同交流。

    评论 1
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值