Python 如何从Flask中的配置文件导入?

Python 如何从Flask中的配置文件导入?,python,python-2.7,flask,Python,Python 2.7,Flask,我遵循了我的烧瓶项目的布局 我的结构如下: app/ __init__.py views.py forms.py myFile.py run.py config.py 在views.py、forms.py中,我可以使用 from config import basedir 但是我不能在myFile.py中使用它 我补充说 import Flask 当我修改它时,Flask web服务器重新启动,但它没有说在app/myFile.py中找到了更改。重新启动它

我遵循了我的烧瓶项目的布局

我的结构如下:

app/
    __init__.py
    views.py
    forms.py
    myFile.py
run.py
config.py
在views.py、forms.py中,我可以使用

from config import basedir
但是我不能在myFile.py中使用它

我补充说

import Flask 
当我修改它时,Flask web服务器重新启动,但它没有说在app/myFile.py中找到了更改。重新启动它只是重新启动

我需要做什么才能使用

from config import basedir
在我的python文件中。我看不到在forms.py的
\uuuu init\uuuuuuuuuy.py
中做了什么特别的事情

编辑:这是我的
\uuuu init\uuuu.py
文件:

from flask import Flask
from config import basedir

app = Flask(__name__)
app.config.from_object('config')
from app import views

当人们在Flask中谈论配置时,他们通常谈论的是将值加载到应用程序的配置中。在上面的示例中,在
init.py
文件中可以有类似于
app.config.from_object('config')
的内容。然后,所有配置值都将加载到
app.config
字典中


然后,在任何文件中,您都可以导入app对象以访问该字典。我倾向于访问
app
对象,方法是从flask将当前的应用程序导入为app,然后只需
app.config['MY\u SETTING']
获取我关心的值

经过一点修改(以及“net”的一点帮助),我可以通过将代码更改为包含配置来进一步改进:

app.config.from_object('config.ProductionConfig')
这为以下配置启用了此酷模式:

class Config(object):
    DEBUG = True
    DEVELOPMENT = True
    SECRET_KEY = 'do-i-really-need-this'
    FLASK_HTPASSWD_PATH = '/secret/.htpasswd'
    FLASK_SECRET = SECRET_KEY
    DB_HOST = 'database' # a docker link

class ProductionConfig(Config):
    DEVELOPMENT = False
    DEBUG = False
    DB_HOST = 'my.production.database' # not a docker link

现在剩下的是看看如何将测试配置集成到这其中,但至少感觉不那么笨拙。

我在flask项目根文件夹中创建了一个config.json文件,如下所示:

with open('config.json') as config_file:
    config_data = json.load(config_file)
config.json

只需在我们想要访问配置值的地方添加下面的代码。例如,我将在app.py中使用如下内容:

with open('config.json') as config_file:
    config_data = json.load(config_file)
第一个导入json库:

import json
然后打开文件,读取json并将其存储在如下变量中:

with open('config.json') as config_file:
    config_data = json.load(config_file)
在创建一个名为app
app=Flask(\uuuuu name\uuuu)
的Flask应用程序后添加下面的代码,以访问config.json-configuration值

# mail configuration
mail_settings = config_data['mail_settings']
app.config.update(mail_settings)

# database configuration
db_settings = config_data['database']
app.config.update(db_settings)

我在init.py文件中有app.config.from_对象('config')。你知道为什么“从配置导入basedir”在views.py和forms.py中工作吗?谢谢。在文件里。没有解释如何从其他文件访问配置设置。对象如何知道配置模块?我有
配置
模块和
初始化
模块。我一直收到此错误:
ImportStringError:import\u string()对于'config.ProductionConfig'失败。
我看到了相同的错误。我的可安装应用程序代码位于
app/src/myapp/
中,我的
\uuuu init\uuuu.py
也位于该位置。因此,
INSTANCE\u路径
app/src/INSTANCE/
。你能修复这个@Ciastopiekarz吗?这里应该是
app.config.from_object('config.ProductionConfig')
而不是
app.config.from_object(config.ProductionConfig)
其中
config
config
类的一个实例?@greg No,
from_object
获取一个字符串,然后用于动态导入模块。看见是的,它的名字不好,而且很混乱。另外,使用字符串引用模块也不是最好的主意——这会降低IDE跟踪使用情况的能力;这不酷。这是代码还是配置?代码和配置应该分开。在否决表决之前,我的要求是我们必须解释错误的部分@Siva,在Flask应用程序中,我们可以在根文件夹中为配置创建config.py文件。OP&每个人都在讨论config.py文件。很抱歉,当我开始创建配置文件时,我没有正确检查文档,无论我在项目中使用哪个文档进行配置,@sarathlan Tnx to you,我现在可以理解我的错误了。