如何从其他文件夹导入模块?

Gasp0de:

我有一个项目要结构如下:

myproject
  __init__.py
  api
    __init__.py
    api.py
  backend
    __init__.py
    backend.py
  models
    __init__.py
    some_model.py

现在,我想some_model.py同时在api.py和中导入模块backend.py如何正确执行此操作?

我试过了:

from models import some_model

但是失败了ModuleNotFoundError: No module named 'models'

我也尝试过:

from ..models import some_model

这给了我ValueError: attempted relative import beyond top-level package

我在这里做错了什么?如何从其他目录(不是子目录)导入文件?

威姆:

首先,此导入语句:

from models import some_model

应该命名空间:

# in myproject/backend/backend.py or myproject/api/api.py
from myproject.models import some_model

然后,您需要将包含的目录myproject(称为/path/to/parent)进入sys.path列表。您可以通过设置环境变量来临时执行此操作:

export PYTHONPATH=/path/to/parent

或者,最好是通过编写setup.py文件并安装软件包来实现。请遵循PyPA包装指南。写入setup.py文件后,请在同一目录中执行此操作以在中设置正确的条目sys.path

pip install --editable .

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章