IIS6.2通过FastCGI部署Flask提示No module named 'app'错误
IIS 6.2 FastCGI部署Flask报
ModuleNotFoundError: No module named 'app'解决指南 该报错本质是wfastcgi启动时,在Python的模块搜索路径里找不到名为app.py的代码文件,按以下优先级排查修复即可:
1. 修复路径不匹配问题(90%的同类报错都是这个原因)
你的配置存在明显的路径拼写/目录不一致问题:
PYTHONPATH配置的路径为C:\inetpub\wwwroot\stockmanager(目录名全小写)- FastCGI脚本处理器配置的wfastcgi.py路径为
C:\inetpub\wwwroot\StockManager\wfastcgi.py(目录名大写S开头) - 报错日志中wfastcgi的实际运行路径也是大写开头的
StockManager目录
要么是写PYTHONPATH时手滑拼错了目录名,要么是磁盘上同时存在stockmanager、StockManager两个同名不同大小写的目录,app.py放在小写目录、wfastcgi和web.config放在大写目录,导致Python搜索模块时根本扫不到app.py的位置。
修复操作:
- 统一所有文件的存放位置:把app.py、web.config、wfastcgi.py、虚拟环境env文件夹全部放到同一个项目目录下,不要分散在两个目录
- 把web.config中
PYTHONPATH的值修改为项目根目录的绝对路径,和实际目录名完全一致,示例:
<add key="PYTHONPATH" value="C:\inetpub\wwwroot\StockManager" />
2. 修正代码与配置的冗余/错误项
- 删掉app.py末尾的
app.run():这行是本地开发调试用的内置服务器启动逻辑,在IIS托管模式下不需要,保留可能引发进程冲突、启动失败问题。修正后的app.py代码如下:
from flask import Flask app = Flask(__name__) @app.route("/") def home(): return "Hello, This is the Flask App in IIS Server."
- 确认
WSGI_HANDLER配置:你当前写的app.app逻辑是对的,含义为「从app.py模块中导入名为app的Flask实例」,路径修复后即可正常加载,不需要修改。
3. 兜底校验项
如果上述操作完成后仍报错,依次检查以下配置:
- 打开Windows文件夹选项,取消勾选「隐藏已知文件类型的扩展名」,确认你的代码文件名确实是
app.py,不是app.py.txt这类带隐藏后缀的文件 - 给项目根目录(包含虚拟环境env子目录)配置IUSR、IIS_IUSRS账户的读取&执行、列出文件夹内容、读取权限,配置时勾选「替换所有子对象的权限项」,避免子目录权限继承失败
- 确认IIS的FastCGI设置列表中,添加的python.exe路径和web.config里scriptProcessor配置的路径完全一致;同时确认虚拟环境中已经安装了flask、wfastcgi依赖包,不要混用全局Python和虚拟环境的路径
- 所有配置修改完成后,以管理员身份打开命令提示符执行
iisreset重启IIS服务,再清空浏览器缓存访问站点即可。
内容的提问来源于stack exchange,提问作者Skity
相关产品推荐
相关产品推荐

