0

私はここで Python の考え方に反対するかもしれませんが、私にとっては、パッケージ (または任意のプロジェクト フォルダー システム) に関して言えば、パッケージの内容PYTHONPATH.

たとえば、次の階層を考えてみましょう。

somewhere/
    foo/
        __init__.py
    bar/
        __init__.py
        foo/
            __init__.py

somewhereが にPYTHONPATHあり、ここに他に何もない場合somewhere/bar/__init__.py、単純な を実行する場合、まったく見知らぬ人ではなく、その子をパス変数からインポートする必要があるimport fooと思います。独自のシステム内で何かが見つからない場合は、Path に移動する必要があります。barsomewhere/bar/foosomewhere/foo

ただし、私のテストでは、PYTHONPATH直接の子孫に勝っているように見えますが、これは残念なことです。なぜなら、それは強力で柔軟性に欠けるシステムであり、階層の DAG の性質を適切に尊重していないからです。兄弟ではなく、先祖や完全な関係のない子供たちが最初に来ます。しかし、外すPYTHONPATHといきなり中を使ってしまいfooますbar

私は何か間違ったことをしているだけですか、それともPythonは本当にこのように機能しますか? 私が思うように機能させるためにできることはありますか?を削除するsomewhere/bar/fooと、パス調べることができますが、インスタンス変数がクラス変数をオーバーライドするのと同じように、を明示的にfooinにするbarと、それを使用する必要があります。

4

1 に答える 1