Я хочу понять root моей проблемы. Я сталкивался с этим пару раз, и каждый раз мне приходилось разбираться с этим.
На этот раз я чувствую, что упустил что-то, что, как мне казалось, я понял. Связанный вопрос размещен здесь: Бесконечный l oop с Python импортом; ищу Pythoni c way
Я решил, что мои модули представляют бесконечный l oop, но я все еще получаю ту же ошибку. так вот что у меня есть. Я также включил сюда __init__.py
файлов, потому что подозреваю, что этот файл может вызвать поведение, о котором я в данный момент не знаю.
В sources/preparation/features/__Init__.py
:
from .build_features import *
from .get_qualified_edges import *
from .select_strategy import *
from .test import *
В sources/preprocessing/__init__.py
, У меня есть:
from .apply_preprocessing import *
from .convertion import *
В sources/preprocessing/apply_preprocessing
У меня есть:
from Sources.Preparation.Features.get_qualified_edges import get_all_GeneDisease_unweighted_disease2disease_qualified_edges
from Sources.Preparation.Features.get_qualified_edges import get_GPSim_disease2disease_qualified_edgesjk
В каталоге source/preparation/features/get_qualified_edges.py
:
from Sources.Preprocessing.convertion import Converter # added this lien causes error to be raised
from itertools import combinations
В Sources/preprocessing/conversion.py
Не знаю Ничего не импортировано.
Ниже приведена последовательность файлов, которые запускаются из-за возникновения ошибки:
sources\__init__.py
sources\preparation\__init__.py
sources\prepartion\features\__init__.py
sources\preparation\features\build_features.py
sources\preparation\features\get_qualified_edgdes.py
sources\preprocessing\__init__.py
sources\preprocessing\apply_preprocessing.py
\\error raise
Ошибка возникает, когда я импортирую класс из Sources.Preprocessing.convertion
, как показано ниже. В source/preparation/features/get_qualified_edges.py
:
from Sources.Preprocessing.convertion import Converter # added this lien causes error to be raised
Дайте мне знать, если вам, ребята, нужна дополнительная информация об этой проблеме.
Что я хочу знать: Почему возникает эта проблема? Я решил проблему, когда переместил Converter
из Sources.Preprocessing.convertion
в Sources.Preparation.Data.conversion
.
Наблюдение
Я заметил, что ошибка исчезла, когда нет "перекрестного" импорта между Sources.Preprocessing.modules_A
(импортировано в Sources.Preparation.modules_C
) и Sources.Preparation.modules_B
(импортировано в Sources.Preprocessing.modules_D
).
Вот и все. Нет прямого «перекрестного» импорта между модулями, и вместо этого есть «перекрестный» импорт между родительскими модулями, если это имеет смысл.