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

Python使用pyglet加载字体触发FileNotFoundError但文件存在如何解决

问题原因
  • 核心问题是路径基准选择错误:os.getcwd()返回的是你执行python命令时的终端工作目录,而非main.py脚本自身所在的目录。从报错信息可以看到,生成的路径直接在{full_dir_name}下查找fonts文件夹,但实际fonts文件夹和main.py一起存放在{full_dir_name}/build/目录下,路径少了build层级,因此触发文件找不到错误。
  • 次要风险点:手动拼接Windows路径的反斜杠存在转义风险,且硬编码斜杠写法不具备跨平台兼容性。
解决方案

以下两种写法都可以正确定位字体文件:

写法1(兼容所有Python版本)

import os
from pyglet import font

# 获取当前main.py文件所在的目录(即build文件夹的绝对路径)
current_script_dir = os.path.dirname(os.path.abspath(__file__))
# 拼接字体文件路径,os.path.join会自动处理不同系统的斜杠格式
font_path = os.path.join(current_script_dir, "fonts", "Roboto Bold.ttf")
# 不确定路径是否正确时可以先打印确认
print(font_path)
font.add_file(font_path)

写法2(Python 3.4+推荐,更简洁)

from pathlib import Path
from pyglet import font

# 直接取当前脚本所在目录,拼接字体路径
font_path = Path(__file__).parent / "fonts" / "Roboto Bold.ttf"
font.add_file(str(font_path))
快速排查技巧
  • 每次拼接完路径后先打印输出,和你实际的字体文件完整路径对比,即可快速发现路径层级错误问题。
  • 检查字体文件名的大小写、空格是否和实际文件完全一致,Windows系统虽然不区分大小写,但文件名空格是严格匹配的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:36:03