4

私は pydev プロジェクトを Eclipse で開いています。

プロジェクトのパッケージのネストは次のとおりです。

my-package:
    my-sub-package:
        foo

このプロジェクトでは、作成した別のプロジェクトからのインポートを使用しています。他のプロジェクトのネストは次のとおりです。

my-package:
    my-sub-package:
        bar

したがって、2 つの主要なパッケージは同じ名前です。

インポートしようとすると from my-package.my-sub-package import bar: ImportError: No module named bar.

これは、Eclipse が現在のプロジェクトで検索していて、見つからないbar場合、dist-utils (インポートしようとしているプロジェクトを pip インストールした場所) で検索しないために発生すると思います。

(同じ場所から開かれた通常の python から同じインポートを実行しようとすると、インポートは完全に正常に機能します。つまり、Eclipse のようなものです)。

パッケージの名前が同じで、現在のプロジェクトで適切なパッケージが見つからなかった場合でも、pythonpath 内のすべてのフォルダーでモジュールの検索を続行するように eclipse に指示する方法はありますか (dist-utils に到達できます)。 ?

どうもありがとう。

4

1 に答える 1

0

通常のpythonを正確にどこから実行していますか?あなたが持っている場合

src-root:
    my-package:
        __init__.py
        my-sub-package:
            __init__.py
            foo.py

src-root内から通常のpythonを実行すると、同じ結果が得られます。つまり、機能しませんが、他の場所で実行すると、おそらくあなたが言うように機能します。

パッケージの名前を変更できない場合、唯一のことは、Eclipse PyDev オプションの「ソース フォルダー」から現在の scr-root を削除することですが、foo my-package に二度とアクセスしないという意味ではありません。http://docs.python.org/2/library/sys.html#sys.pathを参照してください

于 2013-04-10T16:41:40.207 に答える