Python 无法在作为包组织的应用程序中加载实例配置

Python 无法在作为包组织的应用程序中加载实例配置,python,flask,Python,Flask,在\uuuu init\uuuuu.py中,我试图从相对于实例文件夹的Python文件加载配置。这引发了一个错误无法加载配置文件(没有这样的文件或目录):“/home/ais flask/ais/instance/config.py”,这是错误的,因为实例文件夹应该在包的旁边,而不是在包中,而我的是。我使用setup.py develope以开发模式安装软件包。我使用python\uuu init\uuuu.py运行应用程序。为什么这不起作用 ais烧瓶/ 人工智能/ __初始值 实例/ con

\uuuu init\uuuuu.py
中,我试图从相对于实例文件夹的Python文件加载配置。这引发了一个错误
无法加载配置文件(没有这样的文件或目录):“/home/ais flask/ais/instance/config.py”
,这是错误的,因为实例文件夹应该在包的旁边,而不是在包中,而我的是。我使用
setup.py develope
以开发模式安装软件包。我使用
python\uuu init\uuuu.py
运行应用程序。为什么这不起作用

ais烧瓶/
人工智能/
__初始值
实例/
config.py
setup.py

因为你的应用程序是一个包,而不是一个模块,所以你需要用一个脚本来运行它。调用
python\uuuu init\uuuu.py
会弄乱python的路径/包检测。这在中进行了描述

ais烧瓶/run.py

from ais import app
app.run(debug=True)
python run.py

考虑使用脚本运行程序,如Flask脚本或Flask Cli。这将允许您创建处理多个命令和选项的运行程序

由于您正在安装包(这是一种很好的设计模式),因此可以使用入口点,而不是自己编写脚本

from flask import Flask
from flask_script import Manager

app = Flask(__name__, instance_relative_config=True)
app.config.from_pyfile('config.py')
manager = Manager(app)
setup.py
中,将以下内容添加到
setup
调用中:

entry_points = {'console_scripts': ['flask=ais:manager.run']}
这会在virtualenv中向路径添加一个
flask
命令

flask runserver
flask runserver
import os
from flask import Flask


app = Flask(__name__, instance_path=os.path.join(os.path.abspath(os.curdir), 'instance'), instance_relative_config=True)
app.config.from_object('config')
app.config.from_pyfile('config.cfg')


@app.route('/')
def hello_world():
    return 'Hello, World!'