Web Platform Installer安装Python及WFastCGI失败求助:签名验证错误
解决Web Platform Installer安装WFastCGI和Python3.4失败的方案
一、修复原安装路径的问题
你遇到的核心问题是Web Platform Installer里的Python3.4下载源因为pytools迁移到PTVS而失效,导致签名验证失败、依赖项安装卡住。可以通过手动补全依赖项来完成原方案:
- 手动安装Python3.4.2(32位)
直接从Python官方归档渠道找到对应32位版本安装包,安装时务必勾选Add Python to PATH,方便后续命令行操作。 - 手动部署WFastCGI
不用再依赖Web Platform Installer:- 先通过服务器管理器的「添加角色和功能」开启IIS的
CGI功能; - 下载WFastCGI官方安装包完成安装;
- 打开IIS管理器,找到目标网站右键选择「处理程序映射」→「添加模块映射」:请求路径填
*,模块选FastCgiModule,可执行文件指向你安装的Python路径下的python.exe,自定义一个名称(比如Python FastCGI)后确认允许请求。
- 先通过服务器管理器的「添加角色和功能」开启IIS的
- 验证IIS组件完整性
确保IIS的Web-Common-Http、Web-Default-Doc、Web-Directory-Browsing等基础组件都已开启,这些是Flask部署的必要条件。
二、更现代的替代部署方案(推荐)
原教程是2015年的,依赖的旧版本工具维护性差,推荐用以下更稳定的方式部署Flask到IIS:
方案1:IIS + FastCGI + 现代Python版本(3.8+)
这是对原方案的升级,兼容性和稳定性更好:
- 准备IIS环境
开启IIS核心功能后,额外安装URL重写组件(IIS默认没有,需单独安装)。 - 安装现代Python
选择Python3.8~3.11之间的版本(稳定性最优),安装时勾选Add Python to PATH,确保pip组件被安装。 - 安装依赖包
打开命令提示符,运行pip install flask wfastcgi。 - 配置IIS网站
- 创建新网站,物理路径指向你的Flask项目根目录;
- 添加模块映射:请求路径
*,模块FastCgiModule,可执行文件格式为[Python安装路径]\python.exe|[Python安装路径]\Lib\site-packages\wfastcgi.py; - 在项目根目录创建
web.config文件,填入以下内容(替换占位符为你的实际路径和Flask实例名):<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <handlers> <add name="Python FastCGI" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\Python39\python.exe|C:\Python39\Lib\site-packages\wfastcgi.py" resourceType="Unspecified" requireAccess="Script" /> </handlers> <rewrite> <rules> <rule name="Flask Rewrite" stopProcessing="true"> <match url="^(.*)$" /> <conditions logicalGrouping="MatchAll"> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> </conditions> <action type="Rewrite" url="app.py/{R:1}" /> </rule> </rules> </rewrite> </system.webServer> <appSettings> <add key="WSGI_HANDLER" value="app.app" /> <!-- 若你的Flask实例是`app = Flask(__name__)`,则填`app.app` --> <add key="PYTHONPATH" value="C:\your\flask\project\path" /> <add key="WSGI_LOG" value="C:\your\log\path\flask.log" /> </appSettings> </configuration> - 启动网站,访问对应域名/IP即可测试。
方案2:IIS + ASP.NET Core Module托管Flask(推荐度更高)
如果服务器支持.NET Core,这种方式性能更好、配置更简洁:
- 安装.NET Core Hosting Bundle
安装后IIS会自动添加ASP.NET Core模块,支持托管Python WSGI应用。 - 配置项目文件
- 在Flask项目根目录创建
web.config:<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <handlers> <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" /> </handlers> <aspNetCore processPath="python.exe" arguments="run.py" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" /> </system.webServer> </configuration> - 创建
run.py作为启动入口(用Waitress替代Flask自带的开发服务器,更适合生产环境):from waitress import serve from app import app # 替换为你的Flask实例导入路径 if __name__ == "__main__": serve(app, host='0.0.0.0', port=5000)
- 在Flask项目根目录创建
- 安装依赖包
运行pip install flask waitress。 - 部署到IIS
创建网站指向项目根目录,启动后即可访问。
三、总结
原教程依赖的旧工具源已失效,要么手动补全依赖项完成原方案,要么换成现代部署方式(更推荐后者,长期维护更省心)。如果坚持用原方案,一定要确保下载到正版Python3.4.2安装包;选择现代方案的话,Python3.8+搭配wfastcgi或ASP.NET Core Module的组合会更稳定可靠。
内容的提问来源于stack exchange,提问作者user3753722
相关产品推荐
相关产品推荐

