我正在开发一个Python项目,基本的文件夹结构如下所示,每个Python文件包含的示例在花括号中。
| generate_recommendations.py
├───.ipynb_checkpoints
├───.vscode
├───csv
├───dao
| | ratingDAO.py { contains a class named RatingDAO }
│ ├───config
│ ├───core
| | rating.py { contains a class named Rating }
│ ├───db
目标: 我想在ratingDAO.py中导入rating.py,并且反过来想要在generate_recommendations.py中导入ratingDAO.py,确保所有的导入都正常工作。
我已经在ratingDAO.py文件中添加了以下导入语句。
from core.rating import Rating
我还在generate_recommendations.py文件中添加了以下导入语句。
from dao.ratingDAO import RatingDAO
当我执行ratingDAO.py时,它可以正常运行且没有错误。
但是当我尝试执行generate_recommendations.py时,我会遇到以下错误:
Traceback (most recent call last):
File "generate_recommendations.py", line 3, in <module>
from dao.ratingDAO import RatingDAO
File "D:\MEGASync\BSc Computer\Research Papers\recommendation-engine\dao\ratingDAO.py", line 3, in <module>
from core.rating import Rating
ModuleNotFoundError: No module named 'core'
我无法解决这个错误。我在 StackOverflow 上看到了大约十篇涉及嵌套导入的帖子,但是我无法找到作者尝试导入两层嵌套的示例。
如果在Python中不可能进行这样的导入,我愿意听取有关如何管理我的Python项目中的文件的建议。
在Java中,我会使用以下文件夹结构:
├───recommendation
| | GenerateRecommendations.java
│ ├───core
| | Rating.java
│ └───dao
| RatingDAO.java
并在RatingDAO.java中使用以下代码导入Rating.java文件,
import recommendation.core.Rating;
然后使用以下代码将 RatingDAO.java 导入 GenerateRecommendations.java 中:
import dao.RatingDAO;
一切都应该能够正常工作,但对于Python来说同样的方法并没有奏效,因此我选择了最初指定的文件夹结构。
顺便说一下,这是我第一次在StackOverflow上提问。我尽力通过参考其他帖子来描述我的问题。如果它不符合好问题的标准,我先道歉。
期待回复! :-)
ratingDAO.py {包含名为RatingDAO的类}
=>在你提到这种语言之前,我已经在想“哈!一个Java程序员”。 - JL Peyret