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

升级Python至3.12后Apache+WSGI部署Django提示模块找不到怎么办

解决Python 3.12下Apache+WSGI无法找到Django模块的问题

问题核心是系统预装的libapache2-mod-wsgi-py3还未适配Python 3.12,导致Apache加载的WSGI模块仍绑定旧版本Python,无法识别新虚拟环境中的Django。以下是两种可行的解决办法:

方法一:从源码编译适配Python3.12的mod_wsgi

这是最彻底的解决方案,直接让mod_wsgi绑定你的Python3.12环境:

  • 卸载系统自带的旧版mod_wsgi:
    sudo apt remove libapache2-mod-wsgi-py3
    
  • 安装编译所需依赖包:
    sudo apt install apache2-dev python3.12-dev
    
  • 切换到Python3.12虚拟环境,用pip安装mod_wsgi:
    /.../back/venv/bin/pip install mod_wsgi
    
  • 生成mod_wsgi的Apache配置片段:
    /.../back/venv/bin/mod_wsgi-express module-config
    
    执行后会输出类似内容:
    LoadModule wsgi_module "/.../back/venv/lib/python3.12/site-packages/mod_wsgi/server/mod_wsgi-py312.so"
    WSGIPythonHome "/.../back/venv"
    
  • 将上述内容替换到Apache的WSGI模块配置文件(通常为/etc/apache2/mods-available/wsgi.load)
  • 重启Apache服务:
    sudo systemctl restart apache2
    

方法二:检查并修正虚拟环境配置

若暂时不想编译,先确认Apache配置是否正确指向Python3.12虚拟环境:

  • 确保WSGIDaemonProcess中的python-home是Python3.12虚拟环境的绝对路径,比如/.../back/venv
  • python-path需设置为Django项目根目录(即包含manage.py的文件夹),例如若manage.py在/.../back/project,则python-path设为/.../back/project
  • 手动验证虚拟环境中是否安装了Django:
    /.../back/venv/bin/pip list | grep Django
    
    若无输出,说明未在新虚拟环境安装Django,执行:
    /.../back/venv/bin/pip install django
    

额外注意事项

  • 重启Apache后,查看错误日志/.../back/logs/back-error.log,若仍有模块找不到的错误,检查虚拟环境路径是否拼写错误,或Apache进程是否有权限访问虚拟环境目录
  • 确保系统自带的旧版mod_wsgi已完全卸载,避免多个版本冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 08:30:10