flask: 在应用内创建应用时显示“ValueError: 尝试在非包中进行相对导入”

4 投票
1 回答
3161 浏览
提问于 2025-04-17 20:02

我正在开发一个应用程序,它的结构看起来像这样:

facebook/
         __init__.py
         feed/
             __init__.py
             models.py
             business.py
             views.py
         chat/
             __init__.py
             models.py
             business.py
             views.py

我的 facebook.__init__.py 文件是:

from flask import Flask
app = Flask(__name__)
import feed.views
import chat.views

我的 facebook.runserver.py 文件是:

from . import app
app.run(debug=True)

我的 feed.views.py 文件是:

from .. import app

@app.route('/hello')
def hello():
    return 'hello world'

我的 chat.views.py 文件是:

from .. import app

@app.route('/chat')
def chat():
    return 'Let's chat'

当我尝试运行这个应用程序,输入 python runserver.py 时,我看到的错误是:

Traceback (most recent call last):
  File "facebook/runserver.py", line 1, in <module>
    from . import app
ValueError: Attempted relative import in non-package

我该如何解决这个问题呢?

1 个回答

6

把你的 runserver.py 文件放到 facebook 文件夹外面,然后把里面的内容改成下面的代码:

from facebook import app
app.run(debug=True)

撰写回答