“ Flask Mega-Tutorial”如何从包根上方加载配置?

时间:2019-05-18 21:33:12

标签: python python-3.x flask

我在The Flask Mega-Tutorial Github Repo中引用此代码

flasky/
    app.py
    config.py
    app/
        __init__.py
        ...
    ...

我不能完全理解其中一句话

#__init__.py
...
from config import config
...
def create_app(config_name):
    app = Flask(__name__)
    app.config.from_object(config[config_name])
    ...
...

如何从包根外部的config.py文件导入?

我确实找到了带有以下条目的Dockerfile

COPY flasky.py config.py boot.sh ./

这是什么意思?此行是否以某种方式将这些文件添加到PATH中?  为什么不简单地将config.py文件放在/app文件夹中?

1 个答案:

答案 0 :(得分:1)

在Github上问了同样的问题,Miguel在这里回答: https://github.com/miguelgrinberg/flasky/issues/154#issuecomment-395907521

引用:

  

找到配置模块,因为它位于当前目录中。它从哪里导入都没有关系,该模块的完全限定位置只是模块名称。这实际上就是您可以从app import ...说出来的原因。找到该应用程序包是因为它位于当前目录中,与config相同。希望这可以澄清它。

再往下走:

  

您对“当前目录”的含义有误解。当前目录是一个操作系统概念,每个进程都有一个标记为当前目录的目录。默认情况下,进程的当前目录是启动应用程序的目录(但如果需要,应用程序本身可以更改此目录)。在这种情况下,您可以从flasky目录启动应用程序,对吗?这就是您的当前目录。您可以从任何Python模块中导入配置和应用程序而不会出现问题,因为当前目录位于Python导入路径中。

希望有帮助。