【发布时间】:2013-12-23 15:50:03
【问题描述】:
这是我尝试使用 Python 3.3、Apache 2.2 进行设置并在 http://www.lfd.uci.edu/~gohlke/pythonlibs/ 使用 mod_wsgi-3.4.ap22.win32-py3.3.zip 时出现的错误日志
mod_wsgi (pid=4940): Target WSGI script 'C:/www/h.wsgi' cannot be loaded as Python module.
mod_wsgi (pid=4940): Exception occurred processing WSGI script 'C:/www/h.wsgi'.
Traceback (most recent call last):\r
File "C:\\Python33\\Lib\\pkgutil.py", line 504, in find_loader\r
return importlib.find_loader(fullname, path)\r
File "C:\\Python33\\Lib\\importlib\\__init__.py", line 64, in find_loader\r
loader = sys.modules[name].__loader__\r
AttributeError: 'module' object has no attribute '__loader__'\r
\r
The above exception was the direct cause of the following exception:\r
\r
Traceback (most recent call last):\r
File "C:/www/h.wsgi", line 5, in <module>\r
application = Flask(__name__)\r
File "C:\\Python33\\lib\\site-packages\\flask\\app.py", line 331, in __init__\r
instance_path = self.auto_find_instance_path()\r
File "C:\\Python33\\lib\\site-packages\\flask\\app.py", line 622, in auto_find_instance_path\r
prefix, package_path = find_package(self.import_name)\r
File "C:\\Python33\\lib\\site-packages\\flask\\helpers.py", line 661, in find_package\r
loader = pkgutil.get_loader(root_mod_name)\r
File "C:\\Python33\\Lib\\pkgutil.py", line 482, in get_loader\r
return find_loader(fullname)\r
File "C:\\Python33\\Lib\\pkgutil.py", line 510, in find_loader\r
raise ImportError(msg.format(fullname, type(ex), ex)) from ex\r
ImportError: Error while finding loader for '_mod_wsgi_293471048e599ca28a13db229cd884c8' (<class 'AttributeError'>: 'module' object has no attribute '__loader__')\r
和浏览器显示“内部服务器错误”。
我不知道为什么,因为当我尝试使用 Python 2.7、Apache 2.2 和 mod_wsgi-3.4.ap22.win32-py2.7.zip 进行设置时,没问题
有人帮帮我,非常感谢!
附注:
httpd.conf 设置
<VirtualHost *:80>
ServerName webmaster@localhost
WSGIScriptAlias / C:/www/h.wsgi
<Directory "C:/www">
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
还有我的应用
from flask import Flask
application = Flask(__name__)
@application.route('/')
def hello_world():
return "Hello"
if __name__ == '__main__':
application.run()
当我更改为 python 2.7 时它工作正常
【问题讨论】:
-
FWIW 我能够通过使用单独的文件并将应用程序导入其中来解决此问题:wsgi.py: from my_app import app as application