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

部署使用PIL的Django应用到Heroku时出现No module named _tkinter错误

问题原因

你导入的ImageTk是PIL中专门用于对接Tkinter图形界面的组件,导入动作本身就会触发依赖加载逻辑,和你后续是否调用相关功能无关。Heroku的服务器属于无头无图形界面环境,默认没有预装Tkinter相关依赖,因此会抛出_tkinter模块缺失的错误。

解决方案

按你的实际使用场景选择对应方案即可:

  • 如果你确认项目全程不需要用到ImageTk的功能:直接删除from PIL import ImageTk as itk这行导入语句即可,不会影响PIL.Image的正常使用。
  • 如果你因为代码复用/多环境适配需求需要保留导入语句:给导入逻辑加异常捕获,无头环境下跳过加载即可
    import PIL.Image
    try:
        from PIL import ImageTk as itk
    except ImportError:
        # 无Tkinter环境时赋值占位对象,避免后续引用itk时报错
        itk = None
    
  • 如果你确实需要用到ImageTk的相关能力:在项目根目录新增名为Aptfile的文件,写入内容python3-tk,重新推送部署后Heroku会自动安装对应的Tkinter依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:06:03