【发布时间】:2019-07-09 21:18:38
【问题描述】:
我正在尝试从烧瓶中导入应用程序以进行单元测试,但导入时遇到问题:
错误描述:Traceback(最近一次调用最后一次):文件 “tests.py”,第 4 行,在 从应用程序导入应用程序文件“/home/master/Workspaces/eduCAT/faq-test/api/app.py”,第 4 行,在 from .models import Question, QuestionSchema, Message, MessageSchema ImportError: 尝试相对导入但未知 父包
我有一个文件树,所有文件都在同一个文件夹中,如下所示:
Folder [api]
-> __init__.py
-> app.py
-> models.py
-> test.py
-> config.py
API 在 flask run 中运行良好,但是当我尝试将 app 导入到 test.py 时出现此错误.
进口: app.py
from flask import jsonify, request
from .models import Question, QuestionSchema, Message, MessageSchema
from api import app, db
进口: __init__.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_marshmallow import Marshmallow
app = Flask(__name__)
app.config.from_object('api.config')
db = SQLAlchemy(app)
ma = Marshmallow(app)
进口: models.py
from api import db, ma
在test.py
上import os
import unittest
from app import app
我已经在 test.py 上尝试过的导入: 进口:
from app import app
错误:
Traceback(最近一次调用最后一次):文件“tests.py”,第 4 行,在 从应用程序导入应用程序文件“/home/master/Workspaces/eduCAT/faq-test/api/app.py”,第 4 行,在 from .models import Question, QuestionSchema, Message, MessageSchema ImportError: 尝试相对导入但未知 父包
导入:
from .app import app
错误:
Traceback(最近一次调用最后一次):文件“tests.py”,第 4 行,在 from .app import app ModuleNotFoundError: No module named 'main.app'; 'main' 不是包
导入:
from api import app
错误:
Traceback(最近一次调用最后一次):文件“tests.py”,第 4 行,在 from api import app ModuleNotFoundError: No module named 'api'
我被这个测试卡住了。
编辑 完整代码
app.py - https://dpaste.de/JgEi
__init__.py - https://dpaste.de/A9sG
models.py - https://dpaste.de/xEx4
config.py - https://dpaste.de/o8pS
test.py - https://dpaste.de/nGrF
【问题讨论】:
-
你的烧瓶应用是在哪里定义的?即这行代码:app = Flask(name)
-
在 __init__.py
from flask import Flask from flask_sqlalchemy import SQLAlchemy from flask_marshmallow import Marshmallow app = Flask(__name__) app.config.from_object('api.config') db = SQLAlchemy(app) ma = Marshmallow(app) -
我相信问题是您有一个名为 app.py 的文件,并且您在 init.py 文件中创建烧瓶应用程序作为变量,也称为 app 所以 python 在破译您的应用程序时遇到问题想进口。也许您可以将 app.py 重命名为其他名称?然后像这样从 test.py 导入应用程序: from api import app
-
将 app.py 重命名为 wgsi.py 并将导入更改为 from api import app,仍然报错:ModuleNotFoundError: No module named 'api'
-
@Nathan 我已经发布了完整的代码,我花了几个小时试图让测试工作,我不知道该怎么做 =/
标签: python-3.x rest api flask flask-sqlalchemy