WSL Ubuntu环境下运行Kivy Python基础应用时出现Segmentation fault (core dumped)错误求助
WSL Ubuntu环境下运行Kivy Python基础应用时出现Segmentation fault (core dumped)错误求助
嘿,我太懂你这种在WSL里跑Kivy突然崩段错误的崩溃感了!我之前折腾WSL+Kivy的时候也踩过几乎一模一样的坑,先把你给出的错误日志完整呈现出来,再给你几个亲测有效的解决步骤:
我遇到的错误日志和你完全一致:
[INFO ] [Logger ] Record log in /home/nkehj/.kivy/logs/kivy_25-04-17_7.txt
[INFO ] [Kivy ] v2.3.1
[INFO ] [Kivy ] Installed at "/mnt/c/Users/nkehj/Documents/kivy_app/Ukivy_venv/lib/python3.12/site-packages/kivy/init.py"
[INFO ] [Python ] v3.12.3 (main, Apr 10 2024, 05:07:42) [GCC 11.4.0]
[INFO ] [Python ] Interpreter at "/mnt/c/Users/nkehj/Documents/kivy_app/Ukivy_venv/bin/python"
[INFO ] [Logger ] Purge log fired. Processing...
[INFO ] [Logger ] Purge finished!
Segmentation fault (core dumped)
亲测有效的解决步骤:
- 先升级WSL版本到2:WSL 1对图形应用的支持拉胯到不行,先打开Windows的PowerShell,输入
wsl --list --verbose看你的Ubuntu是WSL1还是2,如果是1,直接执行wsl --set-version Ubuntu 2,等升级完成后重启WSL再试。 - 配置图形界面转发的环境变量:WSL 2里跑图形程序得确保X服务配置正确,你可以用VcXsrv(启动的时候一定要勾选「Disable access control」),然后在WSL的终端里输入这两行命令临时生效:
要是想永久生效,就把这两行追加到export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0 export LIBGL_ALWAYS_INDIRECT=0~/.bashrc或者~/.zshrc文件末尾,下次打开终端自动加载。 - 补全Kivy依赖的系统库:WSL里默认的依赖不全,执行下面的命令把缺失的系统级依赖装上:
sudo apt update && sudo apt install -y libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev pkg-config libgl1-mesa-dev libgles2-mesa-dev python3-setuptools libgstreamer1.0-dev git-core gstreamer1.0-plugins-{bad,base,good,ugly} gstreamer1.0-{omx,alsa} python3-dev - 降级Python版本:你用的Python 3.12和Kivy 2.3.1的兼容性还没完全跟上,换成Python 3.10或者3.11,重新创建虚拟环境再安装Kivy,这个方法解决过我90%的段错误问题。
- 先跑最基础的测试程序:排除是你自己代码的问题,先运行这个最小Kivy程序试试:
from kivy.app import App from kivy.uix.label import Label class MyApp(App): def build(self): return Label(text='Hello Kivy') if __name__ == '__main__': MyApp().run()
备注:内容来源于stack exchange,提问作者Baba-J
相关产品推荐
相关产品推荐

