BottlePy语法无效?

时间:2013-10-29 20:44:59

标签: python-2.7 mod-wsgi bottle

我正在尝试使用mod_wsgi在Apache后面使用BottlePy。

app.wsgi:

#!/usr/bin/python27
from bottle import route, default_app
from wbem.models import Host

@route('/')
def index():
    return "Home Page"

os.chdir(os.path.dirname(__file__))
application = default_app()

但是,我似乎得到了这个错误:

mod_wsgi (pid=8850): Target WSGI script '/u/apps/wbem/app.wsgi' cannot be loaded as     Python module.
[Wed Oct 30 09:35:17 2013] [error] [client 10.10.65.19] mod_wsgi (pid=8850): Exception   occurred processing WSGI script '/u/apps/wbem/app.wsgi'.
[Wed Oct 30 09:35:17 2013] [error] [client 10.10.65.19] Traceback (most recent call last):
[Wed Oct 30 09:35:17 2013] [error] [client 10.10.65.19]   File "/u/apps/wbem/app.wsgi", line 2, in ?
[Wed Oct 30 09:35:17 2013] [error] [client 10.10.65.19]     from bottle import route, default_app
[Wed Oct 30 09:35:17 2013] [error] [client 10.10.65.19]   File "/usr/local/lib/python2.7/site-packages/bottle.py", line 113
[Wed Oct 30 09:35:17 2013] [error] [client 10.10.65.19]      return s.encode(enc) if isinstance(s, unicode) else bytes(s)
[Wed Oct 30 09:35:17 2013] [error] [client 10.10.65.19]                            ^
[Wed Oct 30 09:35:17 2013] [error] [client 10.10.65.19]  SyntaxError: invalid syntax

如果某位大师能够发光,请欣赏:)

1 个答案:

答案 0 :(得分:0)

您的mod_wsgi使用旧版本的Python(2.4或更早版本)。您需要使用以下方法重建mod_wsgi:

./configure --with-python=/usr/local/python27

或(但请参阅下面的编辑)将你的python27可执行文件移动到它自己的目录(无论如何都是IMO更好的做法),然后将它包含在你的apache wsgi config中:

WSGIPythonHome /usr/local/bin/python2.7 # directory of your Python 2.7

更多详细信息here

希望这有帮助!


编辑:根据GrahamDumpleton的评论,设置WSGIPythonHome在这里不一定有用。我的理解是,它旨在解决你的一个稍微不同的问题:告诉mod_wsgi它的python安装在非标准位置的位置(即,通常不在Apache获得的PATH上)