eggでPythonパッケージを作成する

『エキスパートPythonプログラミング』によると、Pythonで配布用パッケージを作成するには、eggというものを使うそうです。

ところが、『エキスパートPythonプログラミング』のどこを読んでも、eggパッケージの構築方法が書いていない。
もしかすると、eggというのは『エキスパートPythonプログラミング』以前の基本中の基本の技術なのかもしれません。 🙁

しょうがないので、ググってみたところ、素晴らしいサイトが見つかりました。 🙂

こちら → Python開発環境の構築から作成したeggを別環境へインストールするまで

ここに書かれてあるのはPython 2系での説明なので、これをPython 3系に翻訳しながらeggパッケージを作ってみようと思います。

ここでは、Ubuntu 16.04にインストールすることにします。

システム全体の設定

まずは、Pythonをソースインストールします。

続いて、virtualenvをインストールします。

$ sudo pip3 install virtualenv

独自開発環境の作成

適当な名前(hoge1等)で独自開発環境を作成します。

$ virtualenv hoge1

独自開発環境ごとの設定

独自開発環境での設定を有効にします。

$ cd hoge1
$ source bin/activate

これで、pythonやpip(pip3)といったコマンドを実行した時に、hoge1/binにインストールされたものが使われるようになります。
また、pip3でインストールしたパッケージは、hoge1だけにインストールされます。

独自開発環境を無効にするときは、deactivateコマンドを使います。

pasterをインストールします。

$ pip install PasteScript

パッケージの作成

pasterコマンドを使って、適当な名前(MyPkg等)でパッケージを作成します。

$ paster create -t basic_package MyPkg

メールアドレスや作者サイトのURLなどを訊かれてきますが、とりあえず[ENTER]を叩いて先に進みます。
(たぶん、後から変更できるんだろうと思います)

ソースコードを書く

MyPkg/mypkgの中にhoge.pyというファイル名を作ります。

def hello():
    print('こんにちは、Python。')

eggファイルの作成

eggファイル:作成したプログラムを他の環境へインストールするためのファイル

$ python setup.py bdist_egg

distディレクトリの中にeggファイルが作成されます。

$ ls dist
MyPkg-0.0.dev0-py3.6.egg

別環境にパッケージをインストールする

現在の環境を無効にします。

$ deactivate

hoge1と同じ階層にhoge2という環境を作成します。

$ virtualenv hoge2
$ cd hoge2
〜翻訳中〜

$ source bin/activate

hoge1で作ったeggファイルをインストールします。

$ easy_install ../hoge1/MyPkg/dist/MyPkg-0.0.dev0-py3.6.egg

これで、mypkgモジュールが使えるようになりました。
対話モードで実験してみましょう。

$ python
>>> from mypkg.hoge import hello
>>> hello()
こんにちは、Python。

ふー。
これで、『エキスパートPythonプログラミング』を読み進められるようになりました。

追記

pasterで使用可能なテンプレートを調べる。

$ paster create --list-template

『エキスパートPythonプログラミング』のP.169にPython Pasteの使い方が載っていた。

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