wfastcgi在Win7上的IIS中找不到烧瓶应用程序

时间:2017-04-06 14:13:26

标签: python iis flask iis-6 wfastcgi

我正在尝试在IIS6上为Windows 7设置wfastcgi,但它无法找到我的'app.py'文件。我使用http://netdot.co/2015/03/09/flask-on-iis/作为设置方向。以下是我收到的错误消息。在我寻找答案的过程中,最可能的解决方案是权限问题,我相信我正确地给了权限,但仍然没有运气。

Error occurred while reading WSGI handler:
Traceback (most recent call last):
File "C:\inetpub\wwwroot\Flask_Proj\wfastcgi.py", line 712, in main env, handler = read_wsgi_handler(response.physical_path)
File "C:\inetpub\wwwroot\Flask_Proj\wfastcgi.py", line 569, in read_wsgi_handler return env, get_wsgi_handler(handler_name)
File "C:\inetpub\wwwroot\Flask_Proj\wfastcgi.py", line 552, in get_wsgi_handler raise ValueError('"%s" could not be imported' % handler_name)
ValueError: app.app could not be imported StdOut: StdErr: 

以下是Web.config文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <appSettings>
    <add key="WSGI_HANDLER" value="app.app" />
    <add key="PYTHONPATH" value="C:\inetpub\wwwroot\Flask_Proj\" />
  </appSettings>

    <system.webServer>
        <handlers accessPolicy="Read, Script">
            <add name="FlaskHandler" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\Python34\python.exe|C:\inetpub\wwwroot\Flask_Proj\wfastcgi.py" resourceType="Unspecified" requireAccess="Script" />
        </handlers>
    </system.webServer>
    </configuration>

另外,为了让您的生活更轻松,以下是wfastcgi.py文件的代码片段:

def get_wsgi_handler(handler_name):
    if not handler_name:
        raise Exception('WSGI_HANDLER env var must be set')

    if not isinstance(handler_name, str):
        if sys.version_info >= (3,):
            handler_name = handler_name.decode(sys.getfilesystemencoding())
        else:
            handler_name = handler_name.encode(sys.getfilesystemencoding())

    module_name, _, callable_name = handler_name.rpartition('.')
    should_call = callable_name.endswith('()')
    callable_name = callable_name[:-2] if should_call else callable_name
    name_list = [(callable_name, should_call)]
    handler = None

    while module_name:
        try:
            handler = __import__(module_name, fromlist=[name_list[0][0]])
            for name, should_call in name_list:
                handler = getattr(handler, name)
                if should_call:
                    handler = handler()
            break
        except ImportError:
            module_name, _, callable_name = module_name.rpartition('.')
            should_call = callable_name.endswith('()')
            callable_name = callable_name[:-2] if should_call else callable_name
            name_list.insert(0, (callable_name, should_call))
            handler = None

    if handler is None:
        raise ValueError('"%s" could not be imported' % handler_name)

    return handler

以下是我发现类似问题的一些链接:

https://www.experts-exchange.com/questions/28937664/Installing-Flask-app-on-IIS7.html

https://social.msdn.microsoft.com/Forums/en-US/3113de0a-3385-48dc-872b-d70deac071c6/azure-flask-python-could-not-be-imported-error-500-azure-website?forum=windowsazurewebsitespreview

1 个答案:

答案 0 :(得分:0)

我弄明白我做错了什么。这是一个愚蠢的错误,但根据我的搜索,我可能不是唯一的。我安装了python,但我没有pip安装Flask。一旦我开始运行,其他一切都更容易弄明白。