flask应用程序中python中的相对导入
我读过很多这样的问题和博客。我正在尝试构建我的烧瓶应用程序。我的应用程序的当前结构如下:flask应用程序中python中的相对导入,python,flask,Python,Flask,我读过很多这样的问题和博客。我正在尝试构建我的烧瓶应用程序。我的应用程序的当前结构如下: application run_server.py /config __init__.py production.py staging.py development.py /app __init__.py /site __init__.py views.py
application
run_server.py
/config
__init__.py
production.py
staging.py
development.py
/app
__init__.py
/site
__init__.py
views.py
现在,在app/\uuuuu init\uuuuuuy.py
中,我想根据我的环境(开发、暂存、生产)访问配置
我得到这个错误:
ValueError:尝试在顶级包之外进行相对导入
我试过使用-m
开关。
我还尝试将PYTHONPATH
设置为我的根目录,告诉解释器什么是顶级包。
我想我在相对导入中遗漏了一些基本信息。假设您在
application/config/\uuu init\uuu.py
中有config
您还需要
应用程序
目录下的\uuuuu init\uuuuu.py
,如果不需要,则应用程序/应用程序
是您的顶级软件包,如果您通过run_server.py
运行应用程序,则无法访问application/config,app/\uu init\uuuuuuuuupy
中不需要相对导入。你可以简单地说
from config import <production/staging/development>
从配置导入
这是因为,当您的解释器解释run_server.py
时,在行中说,from app import
,它将获取app/\uuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuupy
内容,并尝试在顶层执行它们,即从目录应用程序
执行
现在,假设您正在顶层运行来自..config import config的。显然,它会抛出一个错误 尝试使用。我想这会让事情变得更容易
from __future__ import absolute_import
from application.config import production
这是绝对的,因为您正在指定从中导入的确切路径,以减少歧义
此外,您在应用程序
文件夹中缺少\uuuu init\uuuuuuuuuupy.py
,您可以导入模块而不是名称空间,因为没有config.py文件
from __future__ import absolute_import
from application.config import production