python - Python 3.8.6 中的导入错误

标签 python importerror relative-import

我正在使用 python 3.8.6 使用 Flask 模块构建一个简单的 Web 应用程序,文件夹结构如下所示:

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

__init__.py中有一个名为create_app()的函数,这个函数必须由我的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)

但是当我尝试运行 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:无法从“site”(C:\Python38\lib\site.py)导入名称“create_app”

最佳答案

将其更改为:

从 web-app.site 导入 create_app

从上一级目录运行:

python -m web-app.main

Python 中显然有一个名为 site 的内置模块,因此这里存在一些名称冲突。

关于python - Python 3.8.6 中的导入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66094676/

相关文章:

python - 我的深层复制在这种情况下不起作用

python - 在嵌套 for 循环中将值存储在不同变量中

python - 在做教程时使用 sklearn 遇到 ImportError

Android Studio 无法解析符号 'TabLayout'

MYSQL转储: Errors while restoring database

python - 应用函数来操作 Python Pandas DataFrame 组

python - python 中是否可以从子线程中杀死父线程?

python - 为什么 Pycharm 不能运行相对导入的代码?

python - Python 3.4 上的 Flask Bug?如果应用程序包含相对导入,则开发服务器无法运行

python - 使用 Python 3 从另一个目录中的模块导入本地函数,并在 Jupyter Notebook 中进行相对导入