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

Docker容器中用Supervisord启动Python应用遇typing.Literal属性错误

问题:Docker容器中使用supervisord运行Python应用启动失败,出现typing.Literal属性错误

启动时出现如下错误日志:

*** Operational MODE: preforking+threaded ***
Traceback (most recent call last):
  File "./main.py", line 11, in <module>
    from flask_log_request_id.extras.celery import enable_request_id_propagation
  File "/usr/local/lib/python3.9/dist-packages/flask_log_request_id/__init__.py", line 2, in <module>
    from .request_id import RequestID, current_request_id
  File "/usr/local/lib/python3.9/dist-packages/flask_log_request_id/request_id.py", line 4, in <module>
    from flask import request, g, current_app
  File "/usr/local/lib/python3.9/dist-packages/flask/__init__.py", line 1, in <module>
    from . import json as json
  File "/usr/local/lib/python3.9/dist-packages/flask/json/__init__.py", line 6, in <module>
    from ..globals import current_app
  File "/usr/local/lib/python3.9/dist-packages/flask/globals.py", line 6, in <module>
    from werkzeug.local import LocalProxy
  File "/usr/local/lib/python3.9/dist-packages/werkzeug/__init__.py", line 1, in <module>
    from .serving import run_simple as run_simple
  File "/usr/local/lib/python3.9/dist-packages/werkzeug/serving.py", line 76, in <module>
    t.Union["ssl.SSLContext", t.Tuple[str, t.Optional[str]], t.Literal["adhoc"]]
AttributeError: module 'typing' has no attribute 'Literal'
unable to load app 0 (mountpoint='') (callable not found or import error)
*** no app loaded. GAME OVER ***

解决方法

  • 确认运行环境的Python版本
    容器中可能存在多版本Python,supervisord可能调用了低于3.8的版本(typing.Literal在Python3.8及以上才纳入标准库)。

    1. 在容器内执行python --version验证当前默认Python版本;
    2. 在supervisord的配置文件中明确指定Python3.9的执行路径,例如:
      [program:myapp]
      command=/usr/bin/python3.9 ./main.py
      
  • 移除第三方typing包
    Python3.5及以上自带标准库typing,若安装了第三方typing包会覆盖标准库,旧版本第三方typing没有Literal属性。执行命令卸载:

    pip uninstall -y typing
    
  • 调整Werkzeug依赖版本
    若Werkzeug版本过高导致与当前环境不兼容,可指定兼容Python3.9的版本。在requirements.txt中添加:

    werkzeug==2.0.3
    

    然后重新安装依赖:

    pip install -r requirements.txt
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 21:44:49