我正在尝试从父包调用模块。
我的项目结构 -
be/
__init__.py
api/
__init__.py
models.py
alembic/
env.py
Run Code Online (Sandbox Code Playgroud)
models.py内部调用方法env.py
我试过如下,
from api.models import Base
Run Code Online (Sandbox Code Playgroud)
我收到错误 - ImportError: No module named 'api'
我想通过将alembic目录放在api目录中来重组,但仍然无法导入models.
使用sys.path看起来很hacky,如果我应该改变项目结构,那么请提出建议。
您可以使用相对导入
在里面env.py,你只需要from ..api.models import Base
如果您不想使用相对导入,也可以尝试绝对导入,例如
from be.api.models import Base
前提是您已将其PYTHONPATH导出be到
path_to_be=''
export PYTHONPATH=$path_to_be:$PATH
Run Code Online (Sandbox Code Playgroud)