【问题标题】:Python ModuleNotFoundError: No Module named 'app'Python ModuleNotFoundError:没有名为“app”的模块
【发布时间】:2021-06-03 09:44:18
【问题描述】:

我有一个 Flask 应用程序,在我的 Windows 机器上本地运行时遇到问题。

每当我尝试在我的 venv 中运行它时,我都会收到错误 ModuleNotFoundError: No Module named 'app'

我的项目层次结构如下:

├── app
│   ├────────── __init__.py
│   ├────────── v0_1
│   └────────── v0_2
├── README
├── run.py
└── tests

app/init.py

from flask import Flask
import app.v0_1.v0_1 as V0_1
import app.v0_2.v0_2 as V0_2
import app.messages.messages as MSG

# Create a Flask Application
app = Flask(__name__)

运行.py

from app import app

if __name__ == "__main__":
    app.run(host="0.0.0.0")

.vscode/launch.json

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "python": "${config:python.pythonPath}"
        }
    ]
}

.vscode/settings.json

{
    "python.linting.flake8Enabled": false,
    "python.linting.enabled": true,
    "python.linting.pylintEnabled": true,
    "python.pythonPath": "venv\\Scripts\\python.exe"
}

每个文件夹都有自己的init.py

当我构建一个 Docker 文件并运行我的应用程序时,它运行良好。当我尝试在本地运行它时,我遇到了上面提到的错误。错误指向app/__init__.py中的这两个文件:

import app.v0_1.v0_1 as V0_1
import app.v0_2.v0_2 as V0_2

这些文件夹包含我的 API 的蓝图

这里是GitHub上完整项目的链接here

有人可以帮我吗?

【问题讨论】:

    标签: python python-3.x flask modulenotfounderror


    【解决方案1】:

    它位于__init__.py/app/ 内部没有模块应用程序。唯一的模块是 v0_1 和 v0_2。去掉应用前缀。

    import v0_1.v0_1 as V0_1
    import v0_2.v0_2 as V0_2
    

    应该是

    from v0_1 import v0_1 as V0_1
    from v0_2 import v0_2 as V0_2
    

    这是我的布局

    [root@sri-0000-0001 sandbox]# tree
    .
    ├── app
    │   ├── __init__.py
    │   ├── __init__.pyc
    │   ├── v0_1.py
    │   ├── v0_1.pyc
    │   ├── v0_2.py
    │   └── v0_2.pyc
    └── run.py
    

    这里是文件:

    运行.py

    from app import app
    
    if __name__ == "__main__":
        app.run(host="0.0.0.0")
    

    __init__.py

    from flask import Flask
    from v0_1 import v0_1 as V0_1
    from v0_2 import v0_2 as V0_2
    
    # Create a Flask Application
    app = Flask(__name__)
    

    v0_1.py

    v0_1=None
    

    v0_2.py

    v0_2=None
    

    【讨论】:

    • 我现在收到错误“ModuleNotFoundError: No module named 'v0_1'”。有没有我没有配置的设置?
    • from v0_1 import V0_1 as V0_1
    • @MervinHemaraju,我假设/app/v0_1.py 内部有一个名为v0_1 的对象
    • 我得到同样的错误。如果我尝试直接导入 v0_1,vscode 将其突出显示为黄色。如果我使用 app.v0_1 导入,vscode 不会显示任何错误。但是当我运行该应用程序时,它会给出 modulenotfound。是的,里面有这个对象
    • 确保 vscode 已将您的项目添加到 PYTHONPATH code.visualstudio.com/docs/python/…
    猜你喜欢
    • 1970-01-01
    • 2019-02-26
    • 2022-07-15
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 1970-01-01
    • 2020-11-20
    • 2021-03-09
    相关资源
    最近更新 更多