3

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

package/
    __init__.py
    misc/
        __init__.py
        tools.py
    subpackage/
        __init__.py
        submodule.py

私はにいますsubmodule.py、そして私はインポートしたいと思いmisc.toolsます。絶対インポートを使用してインポートしたくないpackage.misc.toolsのは、パッケージがPYTHONPATH上にある場合にのみ機能するためです。したがって、相対インポートを使用したいと思います。ただし、インポートした名前はmisc.tools、だけでなく、にする必要がありtoolsます。

出来ますか?

4

1 に答える 1

6

どうでしょう...:

from .. import misc
from ..misc import tools as _

print misc.tools.__file__

これによりmisc.toolsprint確認どおり、正しい名前と内容で利用できるようになります。

必然的に、同じモジュールをいくつかのベアネームにバインドします - 私は_典型的な「使い捨てのベアネーム」として選択しましたが、もちろんdel _、必要に応じてその後すぐに使用することもできますmisc.tools

miscまた、 setのその他の属性__init__.py(または特別にtools.py) が使用可能になりますが、barenamemisc自体が使用可能である場合 (複合名misc.toolsが必要な場合はそうでなければなりません)、それが構築するすべての属性を持つことは避けられません。それ自体 (または、実行する他のコードから外部で構築されたもの)。

于 2009-11-04T02:40:07.943 に答える