猿问

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

我正在编写一个序列到序列模型,并且我有以下目录结构


MyProject/

     models/ 

          - __init__.py

          - Encoder.py

     train/

          - __init__.py

          - Train.py


在 Train.py 中,尽管尝试使用以下语法,但我无法从 Encoder.py 导入类 BiDirectionalEncoder


from 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 谢谢!


小怪兽爱吃肉
浏览 108回答 2
2回答

哈士奇WWW

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

慕侠2389804

如果您使用任何 IDE(例如 pycharm),您需要将(我的项目)设置为源引导目录,否则您需要在 settings.py 中检查您的 BASE_DIR然后你就可以导入模型了。从models.Encoder导入BiDirectionalEncoder是的,如果您想从其他环境访问模块,下面是访问和共享模块方式的链接。python模块:-导入(访问)创建和共享希望这能解决您的问题。
随时随地看视频慕课网APP

相关分类

Python
我要回答