Python3 error “ImportError: No module named” have __init__.py

Python3 error “ImportError: No module named” have __init__.py

我创建了一个简单的 flask 应用程序,我的目录结构如下所示:

myproject
- src
-- models
--- __init__.py
-- views
--- errors.py
--- default.py
-- application.py
-- config.py
-- __init__.py
- test
-- test_myproject.py
Readme.md
setup.py
..

来自 src 的 application.py 看起来像这样:

from src.models import db
from src.views.errors import error_pages
from src.views.scoreboard import scoreboard
from src.config import config

test_myproject 看起来像这样:

from src.models import db, Result
from src.application import create_app

我使用 Pycharm 来开发它,当我单击 运行 时它可以工作,但是当我尝试通过命令行 运行 它时 python application.py 我得到以下信息错误:

Traceback (most recent call last):
  File "src/application.py", line 18, in <module>
    from src.models import db
ImportError: No module named 'src'

运行单元测试 python -m unittest 有效。

如果我将导入从 application.py 更改为:

from models import db
from views.errors import error_pages
from views.scoreboard import scoreboard
from config import config

当我通过命令行 运行 它时它会工作,但是测试将不再工作。

File ".../src/application.py", line 18, in <module>
    from models import db
ImportError: No module named 'models'

我做错了什么?

您说您运行正在python application.py,这表明您的工作目录是src。为了能够在 src.* 下导入模块(不使用 PYTHONPATH),您应该从 myproject 目录中 运行 Python。

考虑将 application.py 移动到 myproject 或 运行 将其与 python src/application.py 合并。