尝试从父模块导入变量会中断其他导入

时间:2018-03-16 03:48:25

标签: python

我知道这个问题可能一遍又一遍地被问到,而且我在理解import如何与Python一起工作方面有很长的路要走。在问之前我尽我所能尽力去理解它,但我完全迷失了我认为非常简单import的表现。

我需要访问子模块(user.py)中的app变量才能专门使用app.config。我的结构如下:

src
 | - __init__.py
 | - app.py
 | - models
   | - __init__.py
   | - user.py

我的app.py文件类似于:

from flask import Flask, make_response, abort, jsonify, g
from flask_restful import Api
from flask_login import LoginManager, current_user

from models import db
from apis.v1.tasks import TaskAPI, TaskListAPI
from apis.v1.users import UserAPI, UserListAPI
from apis.v1 import auth

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = "mysql+pymysql://root:root@localhost/database"
app.config['SECRET_KEY'] = "loremIpsumDolorSitAmet"

# More code n stuff

我想亲自动手app,以便我可以在app.config['SECRET_KEY']模块中引用models/user.py

所以我尝试了所有内容(来自models/user.py)。

from src import app
from src.app import app
from .. import app

大多数情况下,我收到类似于ImportError: No module named src.app的错误,但有时我会收到像ImportError: cannot import name User这样的错误,坦白地说我很困惑,因为它几乎就像导入成功但导致某种环?

我真的希望this guide to imports会给我提供我需要的信息,虽然它帮助了我很多孩子/兄弟进口以及理解模块/包/等...,但它不是'帮我解决这个最新的问题。

非常感谢任何帮助。

编辑:好的,所以我要解决的问题是我创建了一个单独的config/包,所以现在文件夹结构是,

src
 | - __init__.py
 | - app.py
 | - config
   | - __init__.py
 | - models
   | - __init__.py
   | - user.py

app.py我正在通过app.config.from_object('config')user.py我正在通过from config import SECRET_KEY访问它。

1 个答案:

答案 0 :(得分:1)

您是否仅尝试import app

您似乎应该使用蓝图和application factory模式以及blueprints。是这样的吗?