【发布时间】:2023-12-23 19:16:01
【问题描述】:
我已将使用flask 和python2.7 运行的应用程序从独立解决方案更改为使用apache 和mod_wsgi 的flask。
我的 Flask 应用程序 (app.py) 包含一些类,它们位于我的应用程序目录 (../) 下方的目录中。
这是我的 app.wsgi:
#!/usr/bin/python 导入系统 导入日志 logging.basicConfig(流=sys.stderr) sys.stdout = sys.stderr project_home = '/opt/appdir/Application/myapp' project_web = '/opt/appdir/Application/myapp/web' 如果 project_home 不在 sys.path 中: sys.path = [project_home] + sys.path 如果 project_web 不在 sys.path 中: sys.path = [project_web] + sys.path 从应用导入应用 应用程序 = 应用程序在我配置 mod_wsgi 之前,我在 app.py 中的主要调用如下所示:
# 主要的 如果 __name__ == '__main__' : 从操作系统导入系统,路径 sys.path.append(path.dirname(path.dirname(path.abspath(__file__)))) 从记录器导入记录器 从主要进口主要 从 configReader 导入 ConfigReader 打印“调用烧瓶” 从线程处理程序导入线程处理程序 ca = ConfigReader() app.run(主机=“0.0.0.0”,线程=真)我完全能够在下面的目录中加载我的类。 使用 mod_wsgi 运行应用程序后,出现以下错误: 全局名称\'Main\'未定义
那么我必须如何更改我的应用程序才能在此处工作:
@app.route("/") 定义测试(): 主要=主要(“测试”) 返回 main.responseMessage()【问题讨论】:
-
你试过
import Mainin你的应用wsgi吗? -
__main__下的任何检查都不会在 mod_wsgi 下执行,因为您的脚本不会作为主脚本执行。设置sys.path的任何内容都必须在app.wsgi中完成,或者最好在mod_wsgi 的Apache 配置中完成。其他任何事情,例如导入模块,都需要始终在需要它们的任何代码文件的顶部完成。
标签: python flask undefined global mod-wsgi