【问题标题】:How do I get the Flask package tutorial work with Poetry?如何让 Flask 包教程与 Poetry 一起使用?
【发布时间】:2021-07-01 11:16:01
【问题描述】:

我正在使用 Poetry 来管理我的 Python 项目(依赖项、包等),并且我正在尝试从 Flask 文档中实现四行 hello world:https://flask.palletsprojects.com/en/1.1.x/patterns/packages/#simple-packages

我的文件夹结构如下:

myproject/
  .venv/
  myproject/
    __init__.py
    views.py
  poetry.lock
  pyproject.toml
  README.rst

两个文件,init.py:

import myproject.views
__version__ = '0.1.0'

from flask import Flask
app = Flask(__name__)

还有views.py:

from myproject import app

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

然而,当我运行 export FLASK_APP=myproject 和 FLASK_ENV=development 并执行 flask run 并将我的浏览器指向端口时,它显示

flask.cli.NoAppException
flask.cli.NoAppException: While importing "myproject", an ImportError was raised:

Traceback (most recent call last):
  File "/myproject/.venv/lib/python3.9/site-packages/flask/cli.py", line 240, in locate_app
    __import__(module_name)
  File "/myproject/myproject/__init__.py", line 1, in <module>
    import myproject.views
  File "/myproject/myproject/views.py", line 1, in <module>
    from myproject import app
ImportError: cannot import name 'app' from partially initialized module 'myproject' (most likely due to a circular import) (/myproject/myproject/__init__.py)

我该如何解决这个问题?我想使用推荐的模式。

【问题讨论】:

  • 先尝试运行poetry shell。至于循环导入,您链接的页面中有注释。
  • 我有,我在虚拟环境中做所有这些

标签: python flask python-poetry


【解决方案1】:

在您的终端中,输入poetry run flask run

【讨论】:

  • 这是不正确的。上一个答案是正确的
【解决方案2】:

我相信您的问题来自于导入__init__.py 顶部的视图。尝试将 import 语句移到文件末尾,就像教程一样。

【讨论】:

  • 谢谢。 vscode python 扩展不允许。它会自动将其移至顶部...为什么?
猜你喜欢
  • 1970-01-01
  • 2013-11-22
  • 1970-01-01
  • 2019-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多