Python3错误"ImportError:没有名为的模块"有__init__.py

Met*_*ymy 6 python unit-testing directory-structure importerror 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
..
Run Code Online (Sandbox Code Playgroud)

来自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
Run Code Online (Sandbox Code Playgroud)

test_myproject看起来是这样的:

from src.models import db, Result
from src.application import create_app
Run Code Online (Sandbox Code Playgroud)

我使用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'
Run Code Online (Sandbox Code Playgroud)

python -m unittest运行的单元测试.

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

from models import db
from views.errors import error_pages
from views.scoreboard import scoreboard
from config import config
Run Code Online (Sandbox Code Playgroud)

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

File ".../src/application.py", line 18, in <module>
    from models import db
ImportError: No module named 'models'
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Ada*_*tek 1

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

考虑迁移application.pymyproject或使用python src/application.py.