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

WeasyPrint配合Django使用时报Fontconfig错误如何解决

问题原因

该错误是Windows环境下Conda安装的WeasyPrint运行时无法读取Fontconfig配置文件导致的:单独运行脚本时能正常读取conda环境的环境变量,但Django启动时未正确加载对应环境变量,或者Fontconfig配置路径未被识别。


解决方案

  • 方案1:手动指定Fontconfig配置路径
    在Django项目的settings.py文件头部添加如下代码,将路径替换为你本地conda环境中Fontconfig配置文件的实际路径,修改后需要重启Django服务生效:

    import os
    # 示例路径:C:/Users/用户名/miniconda3/envs/你的环境名/etc/fonts/fonts.conf
    os.environ['FONTCONFIG_FILE'] = '你的fonts.conf绝对路径'
    

    注意路径使用正斜杠/或者双反斜杠\\,避免转义字符错误。

  • 方案2:直接指定加载字体,跳过Fontconfig检索
    在生成PDF的HTML字符串中加入字体声明,直接指定本地字体文件路径,不需要走Fontconfig配置:

    html_content = """
    <style>
    @font-face {
      font-family: 'custom-font';
      /* 示例用系统自带宋体,也可替换为项目目录下的字体文件路径 */
      src: url('file:///C:/Windows/Fonts/simsun.ttc') format('truetype');
    }
    * {
      font-family: custom-font, sans-serif;
    }
    </style>
    test
    """
    HTML(string=html_content).write_pdf(buffer)
    
  • 方案3:更换WeasyPrint安装源
    先卸载conda版本的WeasyPrint,改用pip安装适配Windows的预编译版本:

    conda remove weasyprint
    pip install weasyprint
    
  • 方案4:校验环境变量
    在Django视图函数和单独运行的测试脚本中分别打印os.environ.get('FONTCONFIG_FILE'),对比返回值,如果Django运行时返回空值,说明启动Django时未激活对应conda环境,启动前先执行conda activate 你的环境名再启动Django服务即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 16:45:05