如何访问应用程序之外的烧瓶应用程序配置?

时间:2012-06-24 21:44:58

标签: python web flask

我不确定这是否是特定于烧瓶的问题,或者我是否只是缺乏对python导入机制的理解,但我遇到了烧瓶Web应用程序的一些问题。这是我的应用程序的布局:

/myapp
  /INSTALL
  /TODO
  /run.py
  /instance
    /application.cfg
  /myapp
    /static
    /templates
    /__init__.py
    /config.py
    /service.py

config.py文件存储默认应用程序配置,application.cfg存储实例配置。它们看起来都像这样:

DEBUG = False
TESTING = False
SECRET_KEY = "please_replace_me"

这是我在 init .py:

中设置应用程序的方法
import flask
app = Flask(__name__, instance_relative_config=True)
app.config.from_object("myapp.config")
app.config.from_pyfyle("application.cfg", silent=True)

现在我想要的是从service.py访问app.config对象,该对象不包含在 init .py或Web应用程序中的任何其他模块中。即这就是我想要的service.py文件:

from somewhere.somehow import app

def run():
  do_stuff(app.config["CONFIG_OPTION"])

问题是service.py文件必须在包内,所以我无法将其移动到一个文件夹,只需导入myapp。我该怎么做?

2 个答案:

答案 0 :(得分:0)

Python相对导入与__main__相关。

如果我认为你的run.py__main__正确的话。在这种情况下,您应该能够:

from myapp import app

答案 1 :(得分:0)

如果要导入位于父目录中的模块,一种可能的方法是在导入之前将父目录添加到sys.path:

cmd_folder = os.path.abspath(os.path.split(inspect.getfile(inspect.currentframe() ))[0])
sys.path.append(cmd_folder+'/../')