我有一个导入错误,我过去两天一直试图解决,但仍然无法弄明白。
我正在构建REST API,并且已将我的源代码放入其标题为cruiser
的模块中。我正在实施应用工厂模式。在__main__.py
我有from cruiser import create_app, models, util
。 create_app
中定义了__init__.py
。
以下是__init__.py
的全部内容:
from flask import Flask
from . import config
from .external import init_app
# App factory function
def create_app(config_data):
app = Flask('cruiser')
app.config.from_object(config.DevelopmentConfig)
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
external.init_app(app)
return app
使用python -m cruiser
在本地运行我的应用程序时,应用程序返回以下错误:from cruiser import create_app, models, util - ModuleNotFoundError: No module named 'cruiser'
(已编辑)
奇怪的是,在app.config.from_object(config.DevelopmentConfig)
中注释__init__.py
可以解决错误。这当然不是一个真正的解决方案,因为那时我的应用程序缺少重要的配置信息。此外,在此示例中,参数(config.DevelopmentConfig
)是硬编码的,因为原始config_data
已传递给它,但我更改了它以确保传递的数据不是实际问题。
我根本不了解__init__.py
中的行与导入错误的关系。
后来我在我的代码中放了一堆 有人认为这是Flask开发服务器的一个问题。使用Flask CLI运行我的应用程序后,它启动时没有错误。但是我遇到了一个新问题:我的API的所有端点都返回404,即使控制台中没有报告错误(Flask的调试模式已打开)。 这是我的代码或服务器的问题吗?如果问题出在我的代码中,我该如何找到解决方案?如果这是服务器问题,我如何让代码在本地运行?至少可以说,不得不上传到实际的服务器进行测试。print()
来查看发生了什么。它们全部打印,甚至是实际create_app
函数在__main__.py
中运行后的那些。在这些全部打印到控制台之后,Flask重新启动了它的服务器(不确定是否应该发生这种情况),因为我在之后的restarting server...
的某些行报告了导入错误。< / p>