You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python执行import mpv报错 找不到mpv_abort_async_command函数

问题描述

开发过程中使用Python mpv绑定库时,执行import mpv抛出如下错误:

Traceback (most recent call last):
  File "e:\Programming\Web2Desk\t1.py", line 1, in <module>
    import mpv
  File "e:\Programming\Web2Desk\mpv.py", line 566, in <module>
    _handle_func('mpv_abort_async_command',     [c_ulonglong],                              None, errcheck=None)   
  File "e:\Programming\Web2Desk\mpv.py", line 502, in _handle_func
    func = getattr(backend, name)
  File "C:\Users\PC\AppData\Local\Programs\Python\Python39\lib\ctypes\__init__.py", line 387, in __getattr__
    func = self.__getitem__(name)
  File "C:\Users\PC\AppData\Local\Programs\Python\Python39\lib\ctypes\__init__.py", line 392, in __getitem__
    func = self._FuncPtr((name_or_ordinal, self))
AttributeError: function 'mpv_abort_async_command' not found
问题根因

报错核心是ctypes加载libmpv动态库时找不到对应导出函数,本质是Python mpv绑定层和本地libmpv核心库版本不匹配,常见触发场景:

  • 项目目录存在文件冲突:报错路径显示e:\Programming\Web2Desk\目录下直接放置了mpv.py文件,Python导入时优先加载了这份本地脚本,没有读取pip安装的正式python-mpv包,和系统中加载的libmpv版本对应不上。
  • 版本差过大:mpv_abort_async_command是libmpv 1.108版本才新增的API,如果本地加载的libmpv.dll(Windows环境)版本低于1.108,新版python-mpv绑定调用旧版dll时就会找不到函数抛出异常。
  • 多版本dll冲突:系统Path路径中存在多份不同版本的libmpv.dll,ctypes加载时优先读取了其他软件带的旧版dll,没有加载预期的高版本文件。
解决步骤
  • 清理本地冲突文件:删除项目e:\Programming\Web2Desk\目录下自行放置的mpv.py、旧版mpv相关dll文件,避免Python导入时优先读取本地文件覆盖正式安装的包。
  • 对齐绑定库和libmpv版本:
    • 如果不想升级本地mpv核心:执行pip uninstall python-mpv卸载当前新版绑定,安装适配旧版libmpv的绑定版本,例如pip install python-mpv==1.0.7,该版本不依赖mpv_abort_async_command接口。
    • 如果要使用新版绑定特性:下载版本号≥1.108的libmpv动态库(注意选择和本地Python位数一致的32/64位版本),将dll文件命名为mpv-2.dll放到项目根目录或者Python安装目录下,保证ctypes能优先加载到这份高版本dll。
  • 验证修复:重新打开终端执行python -c "import mpv",无报错即修复完成。

内容的提问来源于stack exchange,提问作者Anacktice Justice

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 00:39:17