从解释器访问 Flask wsgi 结构化应用程序

Accessing Flask wsgi structured app from interpreter

我有一个 Flask 应用程序,用于部署为 wsgi。我遇到的一个问题是当我想从 Python 解释器加载文件时。

结构是:

|----api
|---------api
|--------------static
|--------------templates
|--------------venv
|--------------models.py
|--------------...

所以在 Python 解释器中,当我加载目录中的文件时 api/api 我需要以 dir.filename 的身份访问它们。例如,如果我有一个文件 api/api/models.py,我可以通过输入命令 from api.mb_models import db... .然后我得到一个文件不存在的错误:

Traceback (most recent call last): File "api/extract.py", line 15, in <module> import api.models as models ImportError: No module named api.models

我也试过如下设置 os 变量,

path = 'api'
os.chdir(path)

虽然它现在作为 wsgi 工作,但我在尝试从解释器加载时遇到了同样的错误。我目前可以将此设置为 运行 作为 wsgi 的唯一方法是不在我的导入语句中指定路径或使用 os 属性,当我在解释器中加载文件时它不起作用

问题是如何从 Python 解释器共享相同的部署配置作为 wsgi 应用程序和 运行ning。

注意:我使用的是虚拟环境。

编辑

我在我的文件导入中删除了所有对 dir 的引用,因此 wsgi 应用程序按预期运行,然后在解释器中 运行 os.cwd(),这给了我预期的结果/Users/gms/development/python/api。然后我使用 os.chdir('/Users/gms/development/python/api/api')、运行 os.cwd() 设置工作目录并获得工作目录所需的结果,但是当我尝试从口译员。

我明白了。我需要在解释器中设置这些:

import sys
sys.path.append('working path here')

而且,瞧,一切都按预期进行。