自作モジュール作成 4 パッケージを直接インポートする

前回は、複数のモジュールを一つのディレクトリにまとめて、パッケージっぽいものを作りました。

今回は、モジュールのインポート部分を以下のように書けるようにしたいと思います。

(前回)

from solima.rectangle import Rectangle
from solima.square import Square

(今回)

from solima import Rectangle
from solima import Square

それでは、やってみます。
solimaというディレクトリをモジュールとして扱うには、このディレクトリ直下に__init__.pyというファイルを置きます。
さらに、RectangleとSquare、二つのクラスを使えるようにするために、以下のような内容を記述します。

solima/__init__.py

import sys, os
sys.path.append(os.path.dirname(__file__))
from rectangle import Rectangle
from square import Square

では、solimaパッケージを使うサンプルスクリプトを書いてみましょう。

main.py

from solima import Rectangle
from solima import Square

r = Rectangle(5, 4)
print('面積:' + str(r.area()))

s = Square(10)
print('面積:' + str(s.area()))

この時点でのディレクトリ構成は以下の通り。

src
├── main.py
└── solima
    ├── __init__.py
    ├── rectangle.py
    └── square.py

実行結果。

$ python main.py
面積:20
面積:100

上手いこといきました。 🙂

自分で使うプログラムを作るだけなら、これだけの知識でもなんとかなると思います。

しかし、不特定多数に配布するプログラムを作るとなると、誰かが作成したパッケージが必要なときに、それをインストールしなければなりません。
その作業をユーザーが、いちいちやらなければならないとなると、大変なことになります。

Q「あんたのプログラムを動かしたんだけど、なんとかっていうパッケージがないって言われたよ」
A「あ、それは、○○○というパッケージを△△△コマンドを使ってインストールしてください」

Pythonプログラマーに対してなら、これでも通用するかもしれませんが、Pythonのインストールだけで、ひいこら言ってる一般ユーザーには、あまりにも辛すぎる。

そこで、インストールコマンドを使わせるにしても、コマンド一発で全てをインストールできる仕組みが必要です。

そのための技術が、Eggであったり、Buildoutであったりするわけなんですが、本を読んでもネット情報を調べても、情報が錯綜していて「これでOK!」というのが見つかりません。

そんなわけで、それを調べるために、ここから苦難の道のりが始まります。 (-_-;)

自作モジュール作成 5 Eggの使い方 »

Pythonプログラミング物語 © 2016 Frontier Theme