为什么 manage.py 看不到__init__文件?



我只是用这个结构制作一个博客应用程序:

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解决了这个问题。谢谢大家的指点。

最新更新