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

Python C模块报错:module 'Onboard.osk' has no attribute 'Util'求助

问题:构建旧Python项目时出现AttributeError错误

尝试构建一个旧项目时,执行./setup.py build出现如下警告:

WARNING: the following files are not recognized by DistUtilsExtra.auto: 
<the list of .c/.h files in Onboard/osk/>

运行./onboard时触发报错:

Traceback (most recent call last):
  File "/home/....../onboard/./onboard", line 35, in <module>
    from Onboard.OnboardGtk import OnboardGtk as Onboard
  File "/home/....../onboard/Onboard/OnboardGtk.py", line 48, in <module>
    from Onboard.Keyboard        import Keyboard
  File "/home/....../onboard/Onboard/Keyboard.py", line 45, in <module>
    from Onboard.KeyboardPopups        import TouchFeedback
  File "/home/....../onboard/Onboard/KeyboardPopups.py", line 256, in <module>
    class LabelPopup(KeyboardPopupDrawable):
  File "/home/....../onboard/Onboard/KeyboardPopups.py", line 264, in LabelPopup
    _osk_util = osk.Util()
AttributeError: module 'Onboard.osk' has no attribute 'Util'

从未接触过Python C模块,请问该错误产生的原因是什么?


错误原因分析

这两个问题直接相关:

  • 警告里提到的Onboard/osk/下的.c/.h文件是Python C扩展模块的源码——这类模块用C语言编写,用来提升性能或调用系统底层接口,必须通过setup.py编译成二进制文件(如.so)才能被Python加载使用。
  • 构建时的警告说明DistUtilsExtra.auto工具未识别到这些C源码文件,导致对应的Onboard.osk模块完全没有被编译。当Python代码尝试调用osk.Util()时,加载的osk模块是空的,自然找不到Util属性,触发AttributeError。

具体诱因:

  1. 旧项目依赖的DistUtilsExtra工具版本和项目预期不匹配,该工具对C扩展文件的识别规则发生了变化,无法自动处理Onboard/osk/下的源码。
  2. 也可能缺少编译C扩展的基础依赖(如GCC编译器、Python开发头文件包),但这里先出现了文件未被识别的警告,核心问题还是构建流程没正确触发C模块的编译。

内容的提问来源于stack exchange,提问作者Alex P.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 17:22:32