我只是用这个结构制作一个博客应用程序:
blog/
__init__.py
main.py
manage.py
config.py
tests.py
__pycache__
...
当开发服务器运行时,我也运行manage.py
:
import unittest, sys
from flask.cli import FlaskGroup
from blog import create_app
我不明白的是为什么我在第三行no module named blog
上得到错误。就好像它没有察觉到__init__.py
的存在。
编辑:
import unittest, sys
from flask.cli import FlaskGroup
from . import create_app
结构:
├── blog
│ ├── client
│ ├── config.py
│ ├── __init__.py
│ ├── main.py
│ ├── manage.py
│ ├── __pycache__
│ ├── templates
│ ├── tests
│ └── venv
manage.py
输出:
(venv) mark@python:~/blog$ python manage.py test
Traceback (most recent call last):
File "manage.py", line 3, in <module>
from . import create_app
ImportError: attempted relative import with no known parent package
另一个编辑:
我选择了另一个结构:
── my_blog
│ ├── project
│ │ ├── __init__.py
│ │ └── main.py
│ ├── tests
│ │ ├── __init__.py
│ │ └── main_test.py
│ └── venv
│ ├── bin
│ ├── lib
│ └── pyvenv.cfg
mark@python:~/my_blog/tests$ python3 main_test.py
Traceback (most recent call last):
File "main_test.py", line 1, in <module>
from project.main import app
ModuleNotFoundError: No module named 'project'
添加父目录到PYTHONPATH
解决了这个问题。谢谢大家的指点。