2016-09-17 7 views
0

私が持っている場合は、ライブラリのように:のpython - インポートの名前空間

mypackageと:

  • __init__.py

  • SubPackage1

    • __init__.py
    • moduleA.py
    • moduleB.py
  • SubPackage2
    • __init__.py
    • moduleC.py
    • moduleD.py

しかし、私は、ユーザーがimport MyPackage.moduleAようmoduleAをインポートできることをしたいです直接。 MyPackage/__init__.pyにいくつかのルールを書いてこれを実装できますか? MyPackage/__init__.py

答えて

3

、あなたがサブパッケージから入手するモジュールをインポート:

from __future__ import absolute_import # Python 3 import behaviour 

from .SubPackage1 import moduleA 
from .SubPackage2 import moduleD 

をこれはMyPackageの両方のmoduleAmoduleDグローバルになります。その後、使用することができます。

from MyPackage import moduleA 

、それは同じモジュールに結合し、または直接そのモジュールにアクセスするために

import MyPackage 

myPackage.moduleA 

をやります。それはmypackageと直接生活するmoduleAを必要と

ただし、

from MyPackage.moduleA import somename 

を使用することはできません。 __init__の世界はそれをそこで切断しません。

関連する問題