Я просто хочу обратить больше внимания на собственный ответ Доппельгангера на его вопрос. У меня была эта ошибка, и ситуация такова:
Вы пытаетесь импортировать функцию / класс X из модуля с именем say 'Strategy.py'.
К сожалению, вы также создали каталог пакета python, называемый стратегией, другими словами, у вас есть каталог под названием «стратегия», по крайней мере, с одним файлом в каталоге «стратегия», который называется «____ init ___. Py».
root folder\
strategy.py (contains function/class called X)
strategy\
__init__.py
Затем вы забываете о том, что создали каталог пакета python, и пытаетесь импортировать некоторый класс или функцию, определенную в файле strategy.py
, в корневой каталог, например,
from strategy import X
В результате вы получите ошибку Python error: ImportError: cannot import name X
.
Фактическая проблема, как отмечает Доппельгангер, состоит в том, что интерпретатор python отдает приоритет созданной вами папке пакета, ищет FILE / MODULE с именем X в каталоге пакета и игнорирует фактический модуль strategy.py
и функцию / класс X в нем, который вы на самом деле ищете.
Это именно то, что вы ожидаете и хотите, если вы читаете документацию по пакетам Python, но если вы передумаете на полпути, как я, вы можете почесать голову.