复杂的Python瓶子应用程序+;WSGI

复杂的Python瓶子应用程序+;WSGI,python,mod-wsgi,bottle,Python,Mod Wsgi,Bottle,我在一个文件夹中有一个python瓶子应用程序,它是按函数组织的,我想将我现有的cherrypy用法转换为apache mod_wsgi 文件夹结构如下所示: - project -- app.py (loads the webserver class and runs it) -- app --- common --- logs --- modules --- tools --- web ---- webserver.py 之所以采用这种结构,是因为来自common的代码可以在工具和web中

我在一个文件夹中有一个python瓶子应用程序,它是按函数组织的,我想将我现有的cherrypy用法转换为apache mod_wsgi

文件夹结构如下所示:

- project
-- app.py (loads the webserver class and runs it)
-- app
--- common
--- logs
--- modules
--- tools
--- web
---- webserver.py
之所以采用这种结构,是因为来自common的代码可以在工具和web中使用,而不会产生任何问题。导入都是以“from app.common.blah import utility”的样式完成的。当试图设置mod_wsgi时,它希望加载一个简单的应用程序

可以用这样的文件夹结构运行mod_wsgi吗?如果没有,是否有任何关于建立一个结构的建议,该结构将允许mod_wsgi,但也允许在文件夹(如工具和web)之间共享公共实用程序?

来自:

您只需要一个提供应用程序对象的app.wsgi文件。mod_wsgi使用此对象启动应用程序,并且应该是与wsgi兼容的Python可调用对象

文件
/var/www/yourapp/app.wsgi

在您的情况下,编辑上面的代码段,从以下位置导入您的
app.py

中可能定义的应用程序对象:

您只需要一个提供应用程序对象的app.wsgi文件。mod_wsgi使用此对象启动应用程序,并且应该是与wsgi兼容的Python可调用对象

文件
/var/www/yourapp/app.wsgi


在您的情况下,编辑上面的代码段以导入在
app.py

中可能定义的应用程序对象。他们还需要将Python模块搜索路径设置为包含目录“..../project”。如果不这样做,它将无法找到“app”包。他们还需要将Python模块搜索路径设置为包含目录“../project”。如果不这样做,它将无法找到“app”包。他们还需要将Python模块搜索路径设置为包含目录“../project”。如果不这样做,它将无法找到“应用程序”包。以下方法解决了我的问题:以下方法解决了我的问题:以下方法解决了我的问题:
import os
# Change working directory so relative paths (and template lookup) work again
os.chdir(os.path.dirname(__file__))

import bottle
# ... build or import your bottle application here ...
# Do NOT use bottle.run() with mod_wsgi
application = bottle.default_app()