【发布时间】:2021-12-04 14:33:31
【问题描述】:
上下文。 Python 3.9.1、Flask 2.0.1 和 Windows 10
我想做什么。调用位于自定义包中的模块。
麻烦。无论我做什么,控制台都坚持告诉我:ModuleNotFoundError: No module named 'my_package'
我在做什么。
我正在关注官方的 Flask 教程https://flask.palletsprojects.com/en/2.0.x/tutorial/index.html。因此,项目的结构基本上是这样的(与教程略有不同):
/flask-tutorial
├── flaskr/
│ ├── __init__.py
│ ├── db.py
│ ├── schema.sql
│ ├── templates/
│ ├── static/
│ └── my_package/
│ ├── __init__.py (this file is empty)
│ ├── auth.py
│ ├── backend.py
│ ├── blog.py
│ └── user.py
├── venv/
├── .env
├── .flaskenv
├── setup.py
└── MANIFEST.in
在 /flask-tutorial/flaskr/init.py 文件中,我尝试调用包含我的蓝图的模块:
from my_package import backend
from my_package import auth
from my_package import user
from my_package import blog
backend.bp.register_blueprint(auth.bp)
backend.bp.register_blueprint(user.bp)
backend.bp.register_blueprint(blog.bp)
app.register_blueprint(backend.bp)
当我运行应用程序时(使用flask run 命令),控制台告诉我ModuleNotFoundError: No module named 'my_package',表明问题出在 from my_package import backend 所在的行。
我如何尝试解决问题(未成功)。
首先。我在“my_package”中创建了一个名为 init.py 的空文件
第二。在文件 /flask-tutorial/flaskr/init.py 中,在有问题的 FROM 之前,我放了:
import os.path
import sys
parent = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, parent)
在互联网上,有几个帖子存在同样的问题。他们中的许多人提到解决方案是将 init.py 文件放入包中(我已经这样做了,但对我不起作用)。此外,不幸的是,相关项目的结构与我的不同。
任何想法如何解决这个问题?
【问题讨论】:
标签: python python-3.x flask