2

我正在使用 python 3.8.6 使用模块 Flask 构建一个简单的 Web 应用程序,文件夹结构看起来完全像这样:

web-app
 ├── main.py
 └── site
     ├── __init__.py
     ├── auth.py
     └── models.py

其中__init__.py有一个函数被调用create_app(),这个函数必须由 my 访问main.py

# site/__init__.py
from flask import Flask

def create_app():
    app = Flask(__name__)
    app.config.SECRET_KEY = ""
    return app
enter code here

在我的main.py我导入create_app()这样的:

# main.py
from .site import create_app

app = create_app()

if __name__ == "__main__":
    app.run(debug=True)

但是当我尝试运行 my 时main.py,会引发以下错误:

Traceback (most recent call last):
  File "c:/Users/User/Desktop/website/main.py", line 1, in <module>
    from .site import create_app
ImportError: attempted relative import with no known parent package

我已经尝试在文件夹名称之前不带点导入,例如from site import create_app,但这也不起作用,错误消息只是更改为ImportError: cannot import name 'create_app' from 'site' (C:\Python38\lib\site.py).

4

2 回答 2

1

将其更改为:

from web-app.site import create_app

从上一级目录运行:

python -m web-app.main

显然有以 Python 命名的内置模块site,所以这里有一些名称冲突。

于 2021-02-08T01:06:34.193 回答
1

__init__.py在文件夹内添加一个名为的web-app文件(您可以将其留空)。然后你应该可以做from .site import create_app

于 2021-02-08T01:10:24.260 回答