在WinSrv2019的IIS上部署Python应用报错:未设置WSGI_HANDLER环境变量
在IIS部署Python应用时解决WSGI_HANDLER环境变量未设置的问题
你遇到的错误核心是IIS的FastCGI配置里缺少WSGI_HANDLER环境变量,这个变量用来告诉wfastcgi你的Python应用的入口位置。错误日志如下:
Traceback (most recent call last): File "C:\Python31\Lib\site-packages\wfastcgi.py", line 791, in mainenv handler = read_wsgi_handler(response.physical_path) File "C:\Python31\Lib\site-packages\wfastcgi.py" line 633 in read_wsgi_handlerhandler = get_wsgi_handler(os.getenv("WSGI_HANDLER")) File "C:\Python31\Lib\site-packages\wfastcgi.py", line 586, in get_wsgi_handler raise Exception('WSGI_HANDLER env var must be set') Exception: WSGI_HANDLER env var must be set StdOut: StdErr:
直接按以下步骤解决:
- 先确定你的Python应用的WSGI入口:
- Flask项目:假设主文件是
app.py,里面有app = Flask(__name__),值就是app.app - Django项目:值为
你的项目名.wsgi.application(比如项目叫myblog,就是myblog.wsgi.application) - 其他WSGI框架:找导出的WSGI应用对象,格式为
文件名.对象名(文件名不带.py后缀)
- Flask项目:假设主文件是
- 打开IIS管理器,找到目标站点,进入【配置编辑器】
- 在左侧节的下拉菜单里选
system.webServer/fastCgi,找到对应你Python版本的进程条目 - 点击该条目右侧的【...】按钮,打开环境变量设置界面
- 添加新环境变量:
- 名称填
WSGI_HANDLER - 值填你刚才确定的入口路径
- 名称填
- 保存所有设置,右键站点选择【重新启动】,再访问应用即可
额外注意事项:
- 确保已通过
pip install wfastcgi安装wfastcgi,并且执行过wfastcgi-enable命令注册到IIS - 检查站点的应用程序池权限,要能读取你的Python应用目录和Python安装目录的文件
- 确认IIS里配置的Python路径和你实际安装的Python路径一致,避免版本不匹配
内容的提问来源于stack exchange,提问作者BBK
相关产品推荐
相关产品推荐

