为了账号安全,请及时绑定邮箱和手机立即绑定

从不同的文件夹级别导入一个类 - Python

从不同的文件夹级别导入一个类 - Python

小怪兽爱吃肉 2022-07-26 21:46:39
我正在编写一个序列到序列模型,并且我有以下目录结构MyProject/     models/           - __init__.py          - Encoder.py     train/          - __init__.py          - Train.py在 Train.py 中,尽管尝试使用以下语法,但我无法从 Encoder.py 导入类 BiDirectionalEncoderfrom models.Encoder import BiDirectionalEncoder 对于上面的行,我收到错误“ModuleNotFoundError: No module named 'models'”from ..models.Encoder import BiDirectionalEncoder对于最后一行,我收到错误“ImportError:尝试使用没有已知父包的相对导入”有没有办法解决这个问题?我不想使用任何 sys.path.append() 来强制添加路径我在 Spyder 4.0.1 中使用 Python 3.7.6 谢谢!
查看完整描述

2 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

在同一个包中,您可以进行相对导入,但由于您要退出当前包,因此需要进行绝对导入。

from MyProject.models.Encoder import BiDirectionalEncoder



查看完整回答
反对 回复 2022-07-26
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

如果您使用任何 IDE(例如 pycharm),您需要将(我的项目)设置为源引导目录,否则您需要在 settings.py 中检查您的 BASE_DIR

然后你就可以导入模型了。

从models.Encoder导入BiDirectionalEncoder

是的,如果您想从其他环境访问模块,下面是访问和共享模块方式的链接。

python模块:-导入(访问)创建和共享

希望这能解决您的问题。


查看完整回答
反对 回复 2022-07-26
  • 2 回答
  • 0 关注
  • 107 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信