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

使用Matplotlib示例时Django服务器出现内部错误求助

Troubleshooting Django + Matplotlib Internal Server Error on Deployment

这种本地跑的顺风顺水,一部署到服务器就炸的情况真的让人头大,尤其是结合了Matplotlib和法语文本渲染的场景,大概率是环境差异或者配置没跟上导致的。我帮你梳理几个最常见的排查方向,你可以逐一验证:

1. Fix Matplotlib Backend for Headless Server

Matplotlib在Mac本地默认用的是适配桌面环境的交互式后端,但服务器一般是无头(无桌面)环境,这时候必须切换到非交互式后端才能正常渲染。

  • 解决方法:在导入pyplot前强制设置后端,代码示例:
    import matplotlib
    matplotlib.use('Agg')  # 这行一定要在import plt之前执行
    import matplotlib.pyplot as plt
    
  • 也可以在Django的settings.py里通过环境变量全局设置:
    import os
    os.environ['MPLBACKEND'] = 'Agg'
    

2. Install French-Supporting Fonts on Server

你的场景包含法语,服务器可能缺少支持法语特殊字符的字体,导致Matplotlib渲染时崩溃。

  • 排查:登录服务器,用fc-list命令查看已安装字体,确认是否有DejaVu Sans、Liberation Sans这类支持Latin扩展字符的字体。
  • 解决方法:Debian/Ubuntu系统可以直接安装字体包:
    sudo apt-get install fonts-dejavu-core fonts-liberation
    
    同时在Matplotlib代码里明确指定字体,避免自动查找失败:
    plt.rcParams['font.family'] = 'DejaVu Sans'
    plt.rcParams['font.sans-serif'] = ['DejaVu Sans']
    

3. Verify Directory Permissions for Image Output

生成的mplimage.png需要写入服务器的/mj/charts/目录,但Django运行的用户(通常是www-data或nginx)可能没有该目录的写入权限。

  • 排查:用ls -l /path/to/your/project/mj/charts查看目录权限,确认运行Django的用户拥有写权限。
  • 解决方法:修改目录所有权和权限:
    sudo chown -R www-data:www-data /path/to/your/project/mj/charts
    sudo chmod -R 755 /path/to/your/project/mj/charts
    

4. Align Python/Matplotlib Versions with Local Environment

从报错路径能看到服务器用的是Python3.6,如果你本地Mac的Python或Matplotlib版本更高,可能存在API兼容问题。

  • 排查:本地执行python --version和pip show matplotlib,服务器上执行相同命令对比版本差异。
  • 解决方法:在服务器安装和本地一致的Matplotlib版本:
    pip3 install matplotlib==x.x.x  # 替换x.x.x为你本地的Matplotlib版本号
    

5. Check the Full Stack Trace

你提供的报错堆栈是截断的,建议查看服务器上完整的Django日志(通常在/var/log/django/或项目根目录的logs文件夹),最后一行的具体报错(比如RuntimeError: Invalid DISPLAY variable、FontNotFoundError或PermissionError)能直接定位根因,避免盲目排查。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:40:40