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

Windows正常运行的Kivy程序在Ubuntu虚拟机报run()缺self参数错误

Kivy程序在Ubuntu环境运行报错:TypeError: run() missing 1 required positional argument: 'self'

在Windows的PyCharm里写的简单Kivy程序运行正常,为生成APK,在虚拟机Ubuntu中按官方文档安装了pip、PyCharm和Kivy,但运行代码时出现TypeError: run() missing 1 required positional argument: 'self'错误,谷歌搜索未找到有效解决办法。

代码及kv文件内容

Python代码

from kivy.app import App
from kivy.uix.floatlayout import FloatLayout

class Container(FloatLayout):
    pass

class MyApp(App):
    def build(self):
        return Container()

if __name__=='__main__':
    MyApp().run()

kv文件内容

<Container>:
    Button:
        background_normal: ''
        background_color: 0.5, 0, 1, .5
        size_hint: 0.3, 0.3
        pos_hint: {'center_x' : 0.5 , 'center_y':0.5}
        text:'Push'
        color: 0,1,0.5,1
        on_release:
            self.text = 'on release'

问题排查及解决步骤

  1. 核对Kivy版本
    终端执行pip show kivy查看Ubuntu上的Kivy版本,对比Windows环境的版本。如果版本差异较大,安装和Windows一致的版本:

    pip install kivy==x.x.x  # 将x.x.x替换为Windows上的版本号
    
  2. 检查PyCharm解释器配置
    打开PyCharm的File -> Settings -> Project: [你的项目名] -> Python Interpreter,确认选中的解释器里已安装Kivy,且是你在终端安装的那个Python环境。

  3. 避免模块导入冲突
    检查项目目录下是否存在kivy.py或app.py这类与Kivy内置模块同名的文件,如有则重命名,防止干扰正常模块导入。

  4. 终端直接运行测试
    脱离PyCharm,在项目目录下用终端执行:

    python main.py  # 替换为你的代码文件名
    

    如果终端运行正常,说明问题出在PyCharm的环境配置上;如果同样报错,继续排查依赖或版本问题。

  5. 重装Kivy及系统依赖
    先卸载现有Kivy:

    pip uninstall kivy -y
    

    然后安装Ubuntu系统级依赖:

    sudo apt-get update && sudo apt-get install python3-dev python3-pip libgl1-mesa-dev libgles2-mesa-dev python3-setuptools python3-wheel libavformat-dev libavcodec-dev libavdevice-dev libavutil-dev libswscale-dev libavresample-dev libfontconfig1-dev libfreetype6-dev libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev
    

    最后重新安装Kivy:

    pip install kivy
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 18:40:39