Flask项目同目录forms模块导入失败,报错ModuleNotFoundError求助
解决Flask导入forms模块失败的问题
问题根源分析
你遇到的ModuleNotFoundError主要由两个原因导致:一是forms.py本身存在语法错误,Python无法正常加载该模块;二是运行脚本时的工作目录不正确。
具体修复步骤
1. 修复forms.py的语法错误
你的forms.py中,LoginForm类被错误嵌套在RegistrationForm类内部,这会直接导致模块加载失败,同时无法正确导出LoginForm。修正后的代码如下:
from flask_wtf import FlaskForm from wtforms import StringField, PasswordField, SubmitField, BooleanField from wtforms.validators import DataRequired, Length, Email, EqualTo class RegistrationForm(FlaskForm): username = StringField('Username', validators=[DataRequired(), Length(min=2, max=20)]) email = StringField('Email', validators=[DataRequired(), Email()]) password = PasswordField('Password', validators=[DataRequired()]) confirm_password = PasswordField('Confirm Password', validators=[DataRequired(), EqualTo('password')]) submit = SubmitField('Sign Up') # 注意:LoginForm需与RegistrationForm同级,不要缩进 class LoginForm(FlaskForm): email = StringField('Email', validators=[DataRequired(), Email()]) password = PasswordField('Password', validators=[DataRequired()]) remember = BooleanField('Remember Me') submit = SubmitField('Login')
2. 确保运行路径正确
- 确认
flask_blog.py和forms.py在同一文件夹下,不存在跨子目录的情况 - 打开终端,切换到这两个文件所在的文件夹,执行
python flask_blog.py启动项目,不要在其他目录下运行脚本
3. 备选导入方式(若上述步骤无效)
如果仍出现导入错误,可尝试使用相对导入,同时确保项目目录下存在空的__init__.py文件(将目录标记为Python包):
from .forms import RegistrationForm, LoginForm
内容的提问来源于stack exchange,提问作者Michael Camper
相关产品推荐
相关产品推荐

