Kivy运行时遇config.ini权限错误,求解释与修复方案
Kivy运行PermissionError问题:原因与修复
问题描述
作为Python和终端新手,运行app.py时遇到以下问题:
- Kivy检测到旧版本配置(版本21,当前要求27),尝试升级配置但失败
- 触发
PermissionError,无法写入/Users/mhpolymath/.kivy/config.ini - 激活FileHandler日志器时,同样因权限拒绝无法写入日志文件
/Users/mhpolymath/.kivy/logs/kivy_24-01-15_0.txt
完整错误日志
mhpolymath@Haidars-MacBook-Pro invaders % python app.py [WARNING] [Config ] Older configuration version detected (21 instead of 27) [WARNING] [Config ] Upgrading configuration in progress. [ERROR ] Error while activating FileHandler logger Traceback (most recent call last): File "/Users/mhpolymath/miniconda3/envs/flapgame/lib/python3.12/site-packages/kivy/config.py", line 598, in write with open(self.filename, 'w', encoding="utf-8") as fd: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PermissionError: [Errno 13] Permission denied: '/Users/mhpolymath/.kivy/config.ini' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/Users/mhpolymath/miniconda3/envs/flapgame/lib/python3.12/site-packages/kivy/logger.py", line 310, in emit self._configure() File "/Users/mhpolymath/miniconda3/envs/flapgame/lib/python3.12/site-packages/kivy/logger.py", line 283, in _configure FileHandler.fd = open(filename, 'w', encoding=FileHandler.encoding) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PermissionError: [Errno 13] Permission denied: '/Users/mhpolymath/.kivy/logs/kivy_24-01-15_0.txt' [ERROR ] Unable to write the config </Users/mhpolymath/.kivy/config.ini> Traceback (most recent call last): File "/Users/mhpolymath/miniconda3/envs/flapgame/lib/python3.12/site-packages/kivy/config.py", line 598, in write with open(self.filename, 'w', encoding="utf-8") as fd: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PermissionError: [Errno 13] Permission denied: '/Users/mhpolymath/.kivy/config.ini' [INFO ] [Kivy ] v2.3.0 [INFO ] [Kivy ] Installed at "/Users/mhpolymath/miniconda3/envs/flapgame/lib/python3.12/site-packages/kivy/__init__.py" [INFO ] [Python ] v3.12.0 | packaged by Anaconda, Inc. | (main, Oct 2 2023, 12:22:05) [Clang 14.0.6 ] [INFO ] [Python ] Interpreter at "/Users/mhpolymath/miniconda3/envs/flapgame/bin/python" [INFO ] [Logger ] Purge log fired. Processing... [INFO ] [Logger ] Purge finished! [INFO ] [Image ] Providers: img_tex, img_imageio, img_dds, img_sdl2, img_pil (img_ffpyplayer ignored) [INFO ] [Factory ] 195 symbols loaded [INFO ] [Text ] Provider: sdl2 [INFO ] [Audio ] Providers: audio_sdl2 (audio_ffpyplayer, audio_avplayer ignored)
错误原因
核心问题是当前用户没有.kivy目录及文件的读写权限,大概率是之前用sudo运行过Kivy程序,导致目录所有权被改为root,普通用户无法修改。
修复方案
1. 修复目录所有权(推荐)
在终端执行以下命令,将.kivy目录的所有权改回当前用户:
sudo chown -R mhpolymath:mhpolymath /Users/mhpolymath/.kivy
执行后输入系统密码,完成后重新运行python app.py即可。
2. 删除旧配置目录(权限修复无效时使用)
如果修复权限后仍有问题,可直接删除旧的.kivy目录,让Kivy重新生成全新的配置和日志目录:
rm -rf /Users/mhpolymath/.kivy
注意:删除前确认目录内没有需要保留的自定义配置,删除后运行程序会自动创建新目录。
3. 临时指定配置目录(测试用)
如果不想修改原目录权限或删除旧目录,可临时指定Kivy使用当前目录下的临时配置:
export KIVY_HOME="./.kivy_temp" python app.py
这样配置和日志会保存在当前项目目录的.kivy_temp文件夹中,避开原目录的权限问题。
内容的提问来源于stack exchange,提问作者MHPolymath
相关产品推荐
相关产品推荐

