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)
我究竟做错了什么?
你说你正在运行python application.py,这表明你的工作目录是src。为了能够在src.*不使用 PYTHONPATH 的情况下导入模块,您应该从该myproject目录运行 Python。
考虑迁移application.py到myproject或使用python src/application.py.