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,值为虚拟环境的绝对路径。
- 确认FastCGI配置的
命令行验证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安装该工具)。
- 确认处理程序映射中,FastCGI的路径设置正确指向站点根目录(包含
内容的提问来源于stack exchange,提问作者Tony
相关产品推荐
相关产品推荐

