我有一个项目要结构如下:
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] 删除。
我来说两句