[ python ] パッケージ作成

簡単に、パッケージを作ってみた。テスト的に。


例えばこんな感じ。

——————————————
|- packages/
    |- packageA/
         |-subPackageA/
             |- subModuleA.py
             |- __init__.py
         |-moduleA.py
         |-__init__.py

——————————————

上記の例の場合、PYTHONPATHを通しておく必要があるのは packages ディレクトリ。
パッケージはpackageAとなります(という言い方で良いかはわかりませんが一応ニュアンスで汲み取ってください)。

__init__.pyのあるところが、パッケージディレクトリとして読み込まれるようです。

pythonで読む場合は、あらかじめpackageディレクトリにPYTHONPATHを通しておいて、

import packageA

とするとpackageAのimportが完了です。

moduleA内の関数やクラスが使いたい場合は、

import packageA.moduleA
packageA.moduleA.functionA()

という感じで使えます。
subModuleAなら、

import packageA.subPackageA.subModuleA
packageA.subPackageA.subModuleA.functionA()

となります。

・・・。
いちいちpackageだのmoduleだのうるさいな、、 という場合は、

from packageA.subPackageA import subModuleA
subModuleA.functionA()

もしくは

import packageA.subPackageA.subModuleA as subModuleA
subModuleA.functionA()

という感じで使用することが出来ます。

個人的には、from xxx import xxx ぐらいがちょうど良い感じです。

さて、これを使えば、自分だけ、もしくは自社だけのpythonパッケージが作れてしまいます。
MELの時よりもさらに独自ツール感が増すとの噂(?)。

いろいろと面倒も多いpythonですが、
個人的にはもうMELを捨てても良いくらい(というか半分捨てているくらい)どっぷりとpythonです。

wxPythonとかPILとかマニュアル見ないでも使えるぐらいになったら
かなり快適に環境の構築が出来る!はず!

もうすっかりPython厨です。頑張ります。

ちなみにパッケージに関して、さらに詳しい説明はこの辺がわかりやすい、かも?

————————————————————- 追記
__init__.pyに

__all__ = [ “xxx”, “yyy”, “zzz” ]

と定義して、

from xxxxxxxxx import *

とすると、__all__に定義したモジュールが一気に読まれるらしい。

例えば上の階層で言えば、

subPackageA/__init__.pyに
__all__ = [ “subModuleA” ]

と記述してやると、

from packageA.subPackageA import *
subModuleA.functionA()

と、すぐにsubModuleAが使用可能になる。

なるほど。これは便利かも。

コメントを残す

メールアドレスが公開されることはありません。