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

时间:2017-04-17 09:36:55

标签: python unit-testing flask importerror directory-structure

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

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'

我做错了什么?

1 个答案:

答案 0 :(得分:0)

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

考虑将application.py移至myproject或使用python src/application.py运行。