Python/Flask应用程序-相对导入已停止工作



一切都很好,导入一直有效,我的项目结构没有改变。我做了一些更改-添加字段&表单,以及我的app/main/views.py中的所有相关导入突然停止工作。我恢复了我的更改-这也不起作用。帮助

更新:所以它从命令行运行良好;烧瓶运行";,但PyCharm中没有。所以我认为这是PyCharm配置问题。我的config.py文件根本没有改变,所以我认为它在这里:PyCharm运行/调试配置

我没有故意对配置进行任何更改。。。。所以不确定下一步是什么。如果有人对这个项目的配置有意见,我将不胜感激!

这是项目结构。App、Auth和Main显示为软件包:项目结构

这是主要的应用程序demo.py:

import os
from app import create_app, db
from app.models import Org, User, Role, DemoType, DemoReport, DemoRptQ, 
Demo, Question, Answer, Location
from flask_migrate import Migrate
app = create_app(os.getenv('FLASK_CONFIG') or 'default')
migrate = Migrate(app, db)
@app.shell_context_processor
def make_shell_context():
return dict(db=db, Org=Org, User=User, Role=Role, Location=Location,
DemoType=DemoType, DemoReport=DemoReport, DemoRptQ=DemoRptQ, Demo=Demo,
Question=Question, Answer=Answer)
@app.cli.command()
def test():
import unittest
tests = unittest.TestLoader().discover('tests')
unittest.TextTestRunner(verbosity=2).run(tests)

这是应用程序init.py

from flask import Flask
from flask_bootstrap import Bootstrap
from flask_mail import Mail
from flask_moment import Moment
from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager
from config import config
bootstrap = Bootstrap()
mail = Mail()
moment = Moment()
db = SQLAlchemy()
login_manager = LoginManager()
login_manager.login_view = 'auth.login'
def create_app(config_name):
app = Flask(__name__)
app.config.from_object(config[config_name])
config[config_name].init_app(app)
bootstrap.init_app(app)
mail.init_app(app)
moment.init_app(app)
db.init_app(app)
login_manager.init_app(app)
from .main import main as main_blueprint
app.register_blueprint(main_blueprint)
from .auth import auth as auth_blueprint
app.register_blueprint(auth_blueprint, url_prefix='/auth')
return app

和app/main包init.py:

from flask import Blueprint
main = Blueprint('main', __name__)
from . import views, errors
from ..models import Permission
@main.app_context_processor
def inject_permissions():
return dict(Permission=Permission)

最后是app/main views.py,我在第三行得到的错误来自。。导入数据库

from datetime import datetime
from flask import render_template, session, redirect, url_for, flash
from .. import db
from ..models import User, Role, Location, Demo, Question, Answer, DemoType, DemoReport, DemoRptQ
from ..email import send_email
from . import main
from .forms import DashboardForm, EditProfileForm, EditProfileAdminForm, DemosForm, DemoForm
from .forms import QuestionsForm, QuestionForm, DemoTypesForm, DemoTypeForm, DemoReportsForm, DemoReportForm
from .forms import AnswerForm, AnswersForm, LocationsForm, LocationForm
from .forms import UsersForm
from flask_login import login_required, current_user
from ..decorators import admin_required
from wtforms.validators import DataRequired, Optional, Length

@main.route('/', methods=['GET', 'POST'])
def index():
form = DashboardForm()
if form.validate_on_submit():
btn = form.submit.raw_data[0]
if btn == 'Demos':
return redirect(url_for('.demos_list'))
elif btn == 'New Demo':
return redirect(url_for('.edit_demo', id=0))
elif btn == 'Login':
return redirect(url_for('auth.login'))
elif btn == 'Register':
return redirect(url_for('auth.register'))
return render_template('index.html', form=form, isauth=current_user.is_authenticated)
@main.route('/users')
def users_list():
form = UsersForm()
if form.validate_on_submit():
return redirect(url_for('.index'))

我在另一篇文章中找到了这个答案,它成功了!在Pycharm运行/调试配置中,取消选中";将内容根添加到PYTHONPATH";以及";将源根添加到PYTHONPATH";。不明白为什么它坏了或者为什么它被修复了。。。但以后还有很多时间。

PyCharm配置修复

最新更新