10

私は、インポートエラーを解決しようとして、ほとんどの夜に格闘してきました.

これはよくある問題ですが、以前の質問で私の問題に完全に答えることはできませんでした。

私は PyDev (Eclipse プラグイン) とライブラリ Kivy (Python ライブラリ) を使用しています。

私は次のように設定されたファイル構造を持っています:

<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

エンジン.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

ここで何が間違っていたのか分かりますか?このモジュール構造をめちゃくちゃにしてしまったので、フォルダー構造全体の名前を変更しましたが、本来あるべき姿に近いと思います....

4

3 に答える 3

12

循環インポートがあるようです。from engine.pyyou are importing main_menu_widgetfrom from main_menu_widgetyou are importing engine.

これは明らかに Python では許可されていない循環インポートです。

于 2015-11-02T09:42:15.340 に答える
5

同じフォルダーにある場合は、相対パッケージ名を使用します (とにかくそうするのが良い方法です):

from .engine import Engine
于 2013-03-04T03:17:25.673 に答える
1

コード ディレクトリパッケージです。エラーメッセージから判断して、その上のディレクトリC:\MyProjectが PYTHONPATH にあることを確認してください。

プロジェクトを選択し、マウスの右ボタンをクリックしてコンテキスト メニューを開き、 [プロパティ] を選択します。PyDev - PYTHONPATHを選択し、そこから[ソース フォルダー] タブを選択します。上記のディレクトリが存在することを確認します。Add source folderを押していない場合は、ダイアログから選択してOKを押します。

于 2013-05-22T09:20:31.197 に答える