部署Flask+Pymongo至IIS时遇WSGI Handler读取错误求助
错误解读与解决方案
错误根源
堆栈跟踪最终指向ImportError: DLL load failed while importing _ssl: The specified module could not be found.,本质原因是:
- IIS应用程序池进程未加载Anaconda Python环境中SSL相关依赖的DLL文件
- 系统缺失Python 3.9所需的VC++运行时库
- IIS进程未继承Anaconda的环境变量配置
解决方案
1. 安装VC++运行时依赖
- 下载并安装Microsoft Visual C++ 2015-2019 Redistributable(x64版本)
- 安装完成后执行命令
iisreset重启IIS服务
2. 配置IIS应用程序池环境变量
- 打开IIS管理器,找到对应网站的应用程序池,右键选择「高级设置」
- 找到「环境变量」选项并点击编辑,添加如下变量:
- 变量名:
PATH - 变量值:
C:\Users\Administrator\anaconda3;C:\Users\Administrator\anaconda3\Library\bin;C:\Users\Administrator\anaconda3\Scripts(根据你的Anaconda实际路径调整)
- 变量名:
- 重启该应用程序池
3. 完善web.config配置
在appSettings节点中添加PYTHONHOME配置,指定Anaconda的Python根目录:
<configuration> <system.webServer> <defaultDocument> <files> <add value="App.py" /> </files> </defaultDocument> </system.webServer> <appSettings> <add key="PYTHONPATH" value="C:\websites\applicativoflask" /> <add key="WSGI_HANDLER" value="App.app" lockItem="false" /> <add key="PYTHONHOME" value="C:\Users\Administrator\anaconda3" /> </appSettings> </configuration>
4. 验证本地Python环境的SSL可用性
- 打开Anaconda Prompt,执行
python -c "import ssl; print(ssl.OPENSSL_VERSION)" - 若命令报错,执行
conda install openssl更新OpenSSL,必要时重新安装Anaconda环境
5. 检查应用程序池权限
- 尝试将应用程序池的「标识」临时改为
LocalSystem(测试用,生产环境建议使用有权限的专用账号) - 确保该账号拥有Anaconda目录和网站文件目录的读取权限
内容的提问来源于stack exchange,提问作者Pool Nolasco
相关产品推荐
相关产品推荐

