インポートエラーを解決するために、私は一晩中取り組んでいます。
これは一般的な問題ですが、以前の質問で私の問題を完全に解決することはできません。
私はPyDev(Eclipseプラグイン)とライブラリーKivy(a Python library)を使用しています
次のようにファイル構造を設定しています。
<code>
__init__.py
main.py
engine.py
main_menu_widget.py
「コード」はEclipseフォルダー「MyProject」内にありますが、パッケージではないので含めていません。
ファイルは次のようになります。
main.py
# main.py
from code.engine import Engine
class MotionApp(App):
# Ommited
engine.py
# engine.py
from code.main_menu_widget import MainMenuWidget
class Engine():
# Ommited
main_menu_widget.py
# main_menu_widget.py
from code.engine import Engine
class MainMenuWidget(Screen):
pass
詳細に受け取るエラーは次のとおりです。
Traceback (most recent call last):
File "C:\MyProject\code\main.py", line 8, in <module>
from code.engine import Engine
File "C:\MyProject\code\engine.py", line 6, in <module>
from code.main_menu_widget import MainMenuWidget
File "C:\MyProject\code\main_menu_widget.py", line 3, in <module>
from code.engine import Engine
私がここで間違ったことは何か考えていますか?私はこのモジュール構造をめちゃくちゃにしたのでフォルダ構造全体の名前を変更しましたが、見た目が近いと思います...
循環インポートがあるようです。 engine.py
からmain_menu_widget
をインポートしていますが、main_menu_widget
からはengine
をインポートしています。
これは明らかにPythonで許可されていない循環インポートです。
同じフォルダーにあり、相対パッケージ名を使用します(とにかくそうすることをお勧めします)。
from .engine import Engine
コードディレクトリisパッケージ。その上のディレクトリ、つまりC:\MyProject
エラーメッセージから判断すると、PYTHONPATHにあります。
プロジェクトを選択し、マウスの右ボタンをクリックしてコンテキストメニューを開き、[プロパティ]を選択します。 PyDev-PYTHONPATHを選択し、そこからソースフォルダタブを選択します。上記のディレクトリが存在することを確認してください。それが押されていない場合はソースフォルダの追加を選択し、ダイアログから選択して[〜#〜] ok [〜#〜]を押します。