我有一个烧瓶应用程序正在尝试测试,但是遇到导入错误,这使我慢慢地丧命。这是经典的“一个小时前完成的工作,现在还没有。”
我的包裹结构是这样的:
__init__.py
main.py
/tasks
email_utils.py
send_api.py
__init__.py
send_api.py包含一个名为SendEmail的类,我正尝试从main.py导入该类以添加为资源,如下所示:
from tasks.send_api import SendEmail
这将导致ImportError。我也尝试过
from tasks import send_api
app = Flask(__name__)
api = Api(app)
api.add_resource(send_api.SendEmail, '/send')
,但最后一行抛出AttributeError,表示SendEmail不是send_api的属性。如果我只是在导入send_api之后放入一个断点并使用dir(send_api)对其进行检查,则该类名称不会显示在属性中,除了某些导入之外,其他任何全局vars /类也不会显示。我也很奇怪,PyCharm似乎将SendEmail识别为send_api类,并且没有给我任何警告。
send_api.py的结构如下
from flask_restful import Resource
from flask_restful import abort as fr_abort
from werkzeug.wrappers import BaseResponse as Response
from customexceptions import MissingEnvironmentVariables
from tasks import email_utils
class SendEmail(Resource):
#class logic here
如果我只是从main.py和dir(send_api)中的任务中导入send_api,那么我得到的唯一有意义的结果是MissingEnvironmentVariables,Resource,Response和fr_abort(除了email_utils之外,所有在send_api.py中导入的东西,看起来像它应该会显示。甚至email_utils似乎也不会被拾取。
我已经花了一段时间了,实际上只是不知道如何解决这个问题。对于我来说,从send_api.py导入email_utils.py我必须做
from tasks import email_utils
为
import email_utils
或
import .email_utils
似乎也不起作用。
对于冗长的帖子,我们深表歉意。如果有明显我做错的事情,或者给我一个相关的问题会有所帮助,请告诉我。