これがフラスコ固有の問題なのか、それとも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ファイルがパッケージ内にある必要があるため、1つのフォルダーを上に移動して、myappをインポートすることはできません。どうすればよいですか?