次のディレクトリ構造を持つpythonパッケージを設計しています
package\
__init__.py
subpackage1\
__init__.py
module1.py
module2.py
subpackage2\
__init__.py
module3.py
ユーザーが ipython でパッケージをインポートするときに、タブ補完を使用してディレクトリ構造を反映したクリーンな名前空間を探索できるようにしたいと考えています。
たとえば、実行した後
import package as pkg
pkg でタブ補完が必要です。を表示pkg.subpackage1 pkg.subpackage2
し、タブで補完しpkg.subpackage1
ます。表示するpkg.subpackage1.module1 pgk.subpackage1.module2
。これらのモジュールの一部は相互に依存しており、import statements
.
たとえばmodule1.py
、
from ..subpackage2 import module3
ただし、誰かpkg.subpackage1.module1.module3
がimport pkg.subpackage1.module1
.
さらに、人々がそうするとき、import pkg.subpackage1.module1
私はタブ補完をしたくありませんpkg.subpackage1.module1
。内部例外クラスや、numpy を module1 に np としてインポートしたという事実などを表示します。つまり、module1 での module3 の使用と、numpy を np として使用することをユーザーから隠したいと考えています。import numpy as _np
のようなものを使用しfrom ..subpackage2 import module3 as _module3
て、これを行うための最良の方法はありますか?
見られたくないものすべてにアンダースコアを追加する必要がありますか?
明確にするために、ファイル scipy.integrate.quadrature に行があることを scipy ソース コードで確認できますが、ipythonimport numpy as np
で実行すると、import scipy
タブで scipy.integrate.quadrature に移動でき、np が表示されません。