Я работаю над проектом Python со структурой папок basi c, перечисленной ниже, и примеры того, что содержит каждый файл 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
OBJECTIVE : я хочу импортировать rating.py в ratingDAO.py и, в свою очередь, хочу импортировать ratingDAO.py в generate_recommendations.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, я открыт для идеи о том, как мне следует go об управлении файлами в моем проекте Python.
В Java я бы использовал следующую структуру папок,
├───recommendation
| | GenerateRecommendations.java
│ ├───core
| | Rating.java
│ └───dao
| RatingDAO.java
и использовал следующий код для импорта Rating. java в RatingDAO. java,
import recommendation.core.Rating;
и использовал следующий код для импорта RatingDAO. java в GenerateRecommendations. java
import dao.RatingDAO;
и все работало бы, но то же самое не работало для Python, поэтому я выбрал начальную указанную структуру папок.
PS Я впервые задаю вопрос о StackOverflow , Я старался изо всех сил описать мою проблему, ссылаясь на другие сообщения. Заранее извиняюсь, если это не соответствует стандартам хороших вопросов.
Надеемся на ответ! : -)