PyInstaller打包后出现Fontconfig错误的问题求助
解决PyInstaller打包后Fontconfig配置文件缺失的问题
这个错误是因为PyInstaller打包后的可执行文件未包含Fontconfig配置文件,导致程序启动时会等待配置加载超时(也就是你遇到的13秒延迟);而直接运行.py脚本时,程序会读取系统默认的Fontconfig配置,所以不会报错。下面是几种可行的解决办法:
方法1:手动打包Fontconfig配置文件
- 准备一个
fonts.conf配置文件:- 可以从系统中复制(Linux一般在
/etc/fonts/fonts.conf,Windows若有相关工具也能找到对应文件;或者自己写个极简版本,仅包含基础字体查找路径) - 极简版
fonts.conf示例:<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig> <dir>./fonts</dir> <dir>~/.fonts</dir> <dir>/usr/share/fonts</dir> <dir>/usr/local/share/fonts</dir> </fontconfig>
- 可以从系统中复制(Linux一般在
- 在Python脚本开头添加环境变量设置,指定配置文件路径:
import os script_dir = os.path.dirname(os.path.abspath(__file__)) os.environ['FONTCONFIG_FILE'] = os.path.join(script_dir, 'fonts.conf') - 打包时将
fonts.conf一并包含:- Windows系统:
pyinstaller --add-data "fonts.conf;." your_script.py - Linux/macOS系统:
pyinstaller --add-data "fonts.conf:." your_script.py
- Windows系统:
方法2:快速跳过Fontconfig配置加载(解决启动延迟)
如果不需要自定义字体,仅想消除启动延迟,可以让Fontconfig快速失败,避免超时等待:
import os # Windows用NUL,Linux/macOS用/dev/null if os.name == 'nt': os.environ['FONTCONFIG_FILE'] = 'NUL' else: os.environ['FONTCONFIG_PATH'] = '/dev/null'
把这段代码放在脚本最开头,打包后程序启动时会直接跳过Fontconfig配置加载,不会出现超时等待。
方法3:确保GUI依赖被完整打包
如果你的脚本使用了PyQt、Tkinter这类GUI库,PyInstaller可能未自动收集Fontconfig相关依赖,可以尝试用--collect-all参数强制收集库的所有文件:
# 以PyQt5为例 pyinstaller --collect-all PyQt5 your_script.py
内容的提问来源于stack exchange,提问作者Jaime Manuel Garcia Dominguez
相关产品推荐
相关产品推荐

