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

Linux环境下Flask运行报错:module 'typing' has no attribute 'Literal'

问题分析与解决方案

核心问题根源

  1. typing.Literal 找不到:大概率是mod_wsgi实际绑定的Python版本低于3.8(Literal在Python3.8正式加入typing模块)——哪怕你系统安装了3.9/3.10,mod_wsgi可能仍在调用系统默认的低版本Python。
  2. Callable._abc_registry 错误:手动安装第三方typing包引发的冲突——Python3.9+的typing是内置模块,第三方typing包会覆盖内置实现,导致兼容性问题。

分步解决

1. 确认mod_wsgi绑定的Python版本

运行以下命令查看mod_wsgi当前关联的Python路径:

mod_wsgi-express module-config

输出会显示类似LoadModule wsgi_module "/usr/local/lib/python3.9/site-packages/mod_wsgi/server/mod_wsgi-py39.so"的内容,确认版本号是你安装的3.9/3.10。如果不是:

  • 卸载系统自带的mod_wsgi(以Debian/Ubuntu为例):
    sudo apt remove libapache2-mod-wsgi
    
  • 用目标Python版本重新安装mod_wsgi:
    python3.9 -m pip install mod_wsgi
    # 生成Apache配置片段并写入系统配置
    mod_wsgi-express module-config | sudo tee /etc/apache2/mods-available/wsgi.conf
    # 启用模块
    sudo a2enmod wsgi
    

2. 清理冲突的第三方typing包

执行命令彻底卸载第三方typing:

python3.9 -m pip uninstall -y typing

Python3.9+完全不需要额外安装typing,内置模块已经包含所有必要组件。

3. 确保mod_wsgi使用正确的虚拟环境(如果使用了虚拟环境)

在你的Flask项目的.wsgi脚本开头添加以下代码,强制激活目标虚拟环境:

activate_this = '/path/to/your/venv/bin/activate_this.py'
with open(activate_this) as file_:
    exec(file_.read(), dict(__file__=activate_this))

# 后续导入Flask应用
from your_flask_app import app as application

4. 重新安装依赖(避免跨系统依赖问题)

不要直接复制Windows的依赖包到Linux,在Linux目标环境下重新安装:

# 进入虚拟环境后执行
pip install flask==3.0.2 werkzeug==3.0.1
# 或通过requirements.txt批量安装
pip install -r requirements.txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 23:43:24