1

重複の可能性:
Python で相対インポートを行うには?

私には非常にランダムに見える何かを経験しています。

私はこのようなフォルダ構造を持っています:

dir A
    __init__.py is empty
    a.py imports stuff and b.py
dir B
    __init__.py is empty
    b.py imports NOTHING

a.py でエラーが発生します (名前 b をインポートできません)。これは、b がモジュール B の一部である場合にのみ発生します。ディレクトリの外に移動すると、インポート エラーは発生しません。

どんな助けでも大歓迎です。何かを見落としているに違いない。

4

1 に答える 1

4

相対インポートを試しましたか

from ..B import b

?


編集:パッケージがどこにあるかが問題でない場合、これは当てはまりませんB

しかし、あなたは正確に何をしているのかを説明していません。ご存知かもしれませんが、いくつかのインポート フォームがあります。

import module
import package # imports package.__init__ under the name package
import package.module
from package import module
import package
from module import component
from package.module import component

あなたが書くだけのように

a.py はものをインポートし、b.py

正確に何が起こるかわかりません:

import b

bパッケージに存在するため失敗しますB。したがって、次のいずれかが必要です

from B import b
import B.b

上記のあなたのコメントは、名前の衝突について言及しています。同じ名前の 2 つのパッケージとモジュールのどちらが優先されるかは、現在のディレクトリによって'.'異なりsys.pathますutils

于 2012-12-12T11:53:30.717 に答える