当使用wfastcgi在IIS上部署python flask或3.7+应用程序时,有许多很好的教程可以让hello work程序正常工作,例如
这个过程在我看来是失败的,而对其他用户来说似乎是
Can't get dash app run on IIS with flask server
How to deploy python flask application in conda base environment on IIS server?
当Numpy、Pandas、Dash、Plotly Express等其他软件包开始混入时。
抛出的错误倾向于依赖于包,但通常类似于一大块测试,看起来像从Error occurred while reading WSGI handler开始的错误,并以Dll加载失败或缺少组件为特征。
Error occurred while reading WSGI handler: Traceback (most recent call last): File "C:\ProgramData\Anaconda3\envs\dash_search_app\lib\site-packages\wfastcgi.py", line 791, in main env,
handler = read_wsgi_handler(response.physical_path) File "C:\ProgramData\Anaconda3\envs\dash_search_app\lib\site-packages\wfastcgi.py", line 633,
in read_wsgi_handler handler = get_wsgi_handler(os.getenv("WSGI_HANDLER")) File "C:\ProgramData\Anaconda3\envs\dash_search_app\lib\site-packages\wfastcgi.py", line 616,
in get_wsgi_handler raise ValueError('"%s" could not be imported%s' % (handler_name, last_tb)) ValueError: "dashapp.server" could not be imported: Traceback
(most recent call last): File "C:\ProgramData\Anaconda3\envs\dash_search_app\lib\site-packages\wfastcgi.py", line 600,
in get_wsgi_handler handler = __import__(module_name, fromlist=[name_list[0][0]]) File ".\dashapp.py", line 3, in from flaskapp import app File ".\flaskapp\__init__.py",
line 67, in register_dashapps(app) File ".\flaskapp\__init__.py", line 19, in register_dashapps from flaskapp.dashapp_searchtool.layout import layout File ".\flaskapp\dashapp_searchtool\layout.py", line 30,
in import pandas as pd File "C:\ProgramData\Anaconda3\envs\dash_search_app\lib\site-packages\pandas\__init__.py", line 17, in "Unable to import required dependencies:\n" + "\n".join(missing_dependencies)
ImportError: Unable to import required dependencies: numpy: IMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE! Importing the numpy c-extensions failed. -
Try uninstalling and reinstalling numpy. - If you have already done that, then: 1. Check that you expected to use Python3.7 from "C:\ProgramData\Anaconda3\envs\dash_search_app\python.exe",
and that you have no directories in your PATH or PYTHONPATH that can interfere with the Python and numpy version "1.17.3" you're trying to use. 2. If (1) looks fine,
you can open a new issue at https://github.com/numpy/numpy/issues. Please include details on: - how you installed Python
- how you installed numpy - your operating system - whether or not you have multiple versions of Python installed - if you built from source, your compiler versions and
ideally a build log - If you're working with a numpy git repository, try `git clean -xdf` (removes all files not under version control) and rebuild numpy. Note:
this error has many possible causes, so please don't comment on an existing issue about this - open a new one instead. Original error was: DLL load failed:
The specified module could not be found. StdOut: StdErr: C:\ProgramData\Anaconda3\envs\dash_search_app\lib\site-packages\flask_sqlalchemy\__init__.py:794:
FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future. Set it to True or False to suppress this warning.最常见的建议是降级到Python3.6,但这并不是每个项目都可能做到的。
我已经回答了下面我的解决方案,以防其他人可能会有同样的问题,因为我几个小时的谷歌搜索没有导致我找到解决方案。
发布于 2021-03-18 06:14:55
对我来说,这归结为权限问题。我的第一个猜测是环境没有正确注册,但实际上是IIS没有访问环境的所有依赖项的权限。
我解决这个问题的方法是导航到我的Anaconda3文件夹,右键单击并选择属性。在“属性”窗口中,导航到“安全”选项卡,然后单击“编辑

然后我点击' add‘来添加用户,并弹出如下窗口

在Object Type下,我选择了所有选项,Locations我选择了顶层位置。
例如,对于名为app的iis站点,我在对象名称下写入了IIS apppool\app
然后,我点击了check names以确保该应用程序可以被找到,然后点击ok and apply。
添加权限后,IIS站点即可访问所有必需的dll等,应用程序即可正常运行
https://stackoverflow.com/questions/66682029
复制相似问题