彼の質問に対するドッペルゲンガー自身の答えにもっと注意を向けたいだけです. このエラーが発生しました。状況は次のとおりです。
「strategy.py」と呼ばれるモジュールから関数/クラス X をインポートしようとしています。
残念ながら、strategy という名前の python パッケージ ディレクトリも作成しました。つまり、'strategy' という名前のディレクトリがあり、'strategy' ディレクトリに '____init___.py' という名前のファイルが少なくとも 1 つあります。
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
エラーです。
Doppelganger が指摘しているように、実際の問題は、Python インタープリターが作成したパッケージ ディレクトリを優先し、パッケージ ディレクトリで X という名前の FILE/MODULE を検索し、実際のモジュールを無視し、strategy.py
関数/クラス Xを無視することです。その中にあなたが実際に探しているものがあります。
これは、Python パッケージのドキュメントを読んだ場合に期待し、望んでいることとまったく同じですが、私のように途中で考えを変えると、頭を悩ませることになるかもしれません。