如何在 python 中正确导入模块?
How to correctly import modules in pytnon?
我有这个代码
server.py
from admin.users.views import users_blueprint
server/admin/users/forms.py
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
class AddForm(FlaskForm):
pass
server/admin/users/views.py
from flask import Blueprint, render_template, redirect, url_for
from forms import AddForm
users_blueprint = Blueprint('users_blueprint', __name__, template_folder='templates/users')
当我 运行 server.py 时,我得到这个错误:
Traceback (most recent call last):
File "server/server.py", line 6, in <module>
from admin.users.views import users_blueprint
File "server\admin\users\views.py", line 2, in <module>
from forms import AddForm
ModuleNotFoundError: No module named 'forms'
有人知道发生了什么事吗?
由于 forms.py 与调用代码文件 (views.py) 位于同一文件夹中,您可以执行以下操作:
from . import forms
在您的导入语句中,尝试:
from .forms import AddForm
基本原理:当您 运行 代码时,Python 就是 directory-sensitive。在您调用 server.py 的顶级目录中没有名为 forms
的相邻模块。 .
告诉 server/admin/users/views.py
从 server/admin/users/forms.py
模块相邻导入。
您可以添加
import sys
from pathlib import Path
sys.path.append(str(Path('.').absolute().parent))
导入时检查父目录。
导入是相对于您在启动 python 脚本时工作的目录的。在这种情况下,您需要导入表单:
from admin.users.forms import AddForm
或者像这样使用相对导入:
from .forms import AddForm
我有这个代码
server.py
from admin.users.views import users_blueprint
server/admin/users/forms.py
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
class AddForm(FlaskForm):
pass
server/admin/users/views.py
from flask import Blueprint, render_template, redirect, url_for
from forms import AddForm
users_blueprint = Blueprint('users_blueprint', __name__, template_folder='templates/users')
当我 运行 server.py 时,我得到这个错误:
Traceback (most recent call last):
File "server/server.py", line 6, in <module>
from admin.users.views import users_blueprint
File "server\admin\users\views.py", line 2, in <module>
from forms import AddForm
ModuleNotFoundError: No module named 'forms'
有人知道发生了什么事吗?
由于 forms.py 与调用代码文件 (views.py) 位于同一文件夹中,您可以执行以下操作:
from . import forms
在您的导入语句中,尝试:
from .forms import AddForm
基本原理:当您 运行 代码时,Python 就是 directory-sensitive。在您调用 server.py 的顶级目录中没有名为 forms
的相邻模块。 .
告诉 server/admin/users/views.py
从 server/admin/users/forms.py
模块相邻导入。
您可以添加
import sys
from pathlib import Path
sys.path.append(str(Path('.').absolute().parent))
导入时检查父目录。
导入是相对于您在启动 python 脚本时工作的目录的。在这种情况下,您需要导入表单:
from admin.users.forms import AddForm
或者像这样使用相对导入:
from .forms import AddForm