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

Python3.11+Django4.2.5部署IIS10遇AttributeError: Module has no attribute 'wsgi'

解决Django部署IIS时的AttributeError: Module has no attribute 'wsgi'问题

以下是针对性的排查和解决方向:

  • 修正WSGI_APPLICATION配置与项目结构的匹配
    你的settings.py中配置WSGI_APPLICATION = 'main.root.wsgi.application',但从wsgi.py的代码os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'root.settings')来看,root是你的Django项目包(包含settings.py和wsgi.py的目录)。如果main只是外层容器目录而非Python包(没有__init__.py文件),这个路径会导致模块查找失败。
    正确的配置应为:

    WSGI_APPLICATION = 'root.wsgi.application'
    

    若main确实是需要包含的Python包,需确保main目录下存在__init__.py文件(可以是空文件)。

  • 确保项目目录在Python模块路径中
    IIS部署时,Python可能无法自动识别项目的外层目录。可以在wsgi.py开头添加调试代码,确认模块路径:

    import sys
    # 打印当前模块路径,可通过FastCGI日志查看输出
    print("Current sys.path:", sys.path)
    # 手动添加项目外层目录(替换为你的实际路径,比如包含root的main目录)
    sys.path.append("C:/YourAppPath/main")
    

    保存后重启IIS站点,查看FastCGI日志确认路径是否已添加。

  • 验证FastCGI使用的Python环境正确性

    • 确认FastCGI配置的scriptProcessor指向项目虚拟环境的python.exe,而非系统全局Python,避免依赖或版本不匹配。
    • 检查虚拟环境是否正常激活,或在IIS站点的环境变量中添加VIRTUAL_ENV,值为虚拟环境的绝对路径。
  • 命令行验证WSGI模块可导入性
    在服务器上打开命令行,进入项目根目录(manage.py所在目录),执行以下命令:

    python -c "import root.wsgi; print(root.wsgi.application)"
    

    如果命令报错,说明本地模块导入存在问题(如依赖缺失、路径错误),先解决该错误再回到IIS配置。

  • 检查IIS处理程序映射与web.config配置

    • 确认处理程序映射中,FastCGI的路径设置正确指向站点根目录(包含web.config的目录)。
    • 检查web.config中的scriptProcessor是否正确关联了Python解释器和wfastcgi.py路径(确保已通过pip install wfastcgi安装该工具)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 01:30:19