导入 'myapp.app' 时出现导入错误
While importing 'myapp.app' an import error was raised
我正在构建一个 flask 应用程序,它位于我项目中名为 myapp
的子目录中。 运行 gunicorn --bind 0.0.0.0:$PORT myapp.app:app
工作正常,没有错误,无论 FLASK_APP 设置为什么。但是,当我尝试使用 Flask 的 CLI 时,它找不到我的应用程序(合理),但是当我将 FLASK_APP 设置为 myapp.app.
时,它似乎将导入路径加倍,导致导入错误:
FLASK_APP=myapp.app flask run
* Serving Flask app 'myapp.app' (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
Usage: flask run [OPTIONS]
Try 'flask run --help' for help.
Error: While importing 'myapp.myapp.app', an ImportError was raised.
我该如何解决这个问题?这是 Flask 中的错误吗?
我的项目目录中有一个 __init__.py
导致了这个问题。
我在cli.py
中挖掘了flask的源代码,在prepare_import
中找到了如下代码:
# move up until outside package structure (no __init__.py)
while True:
path, name = os.path.split(path)
module_name.append(name)
if not os.path.exists(os.path.join(path, "__init__.py")):
break
因为我的项目目录(也称为 myapp)中有一个 __init__.py
,这使得 flask 尝试从我的项目的祖先导入 myapp.app
,导致 myapp.myapp.app
。
我正在构建一个 flask 应用程序,它位于我项目中名为 myapp
的子目录中。 运行 gunicorn --bind 0.0.0.0:$PORT myapp.app:app
工作正常,没有错误,无论 FLASK_APP 设置为什么。但是,当我尝试使用 Flask 的 CLI 时,它找不到我的应用程序(合理),但是当我将 FLASK_APP 设置为 myapp.app.
时,它似乎将导入路径加倍,导致导入错误:
FLASK_APP=myapp.app flask run
* Serving Flask app 'myapp.app' (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
Usage: flask run [OPTIONS]
Try 'flask run --help' for help.
Error: While importing 'myapp.myapp.app', an ImportError was raised.
我该如何解决这个问题?这是 Flask 中的错误吗?
我的项目目录中有一个 __init__.py
导致了这个问题。
我在cli.py
中挖掘了flask的源代码,在prepare_import
中找到了如下代码:
# move up until outside package structure (no __init__.py)
while True:
path, name = os.path.split(path)
module_name.append(name)
if not os.path.exists(os.path.join(path, "__init__.py")):
break
因为我的项目目录(也称为 myapp)中有一个 __init__.py
,这使得 flask 尝试从我的项目的祖先导入 myapp.app
,导致 myapp.myapp.app
。