python の pip でインストールできる自作モジュールを作ってみる
Java にはライブラリの依存性を管理するためのつーるとして Maven
や Gradle
がありますが、Python の世界にもパッケージ管理ツールとして pip
があります。コードの規模が大きくなってくるとモジュール化は避けては通れない課題なので、今回は pip
を使って、Python での自作モジュールの作成と呼び出しをしてみようと思います。
自作モジュールを用意する
まずは作業をするための自作モジュールのディレクトリを作り、その中に移動します。ディレクトリはなんでもいいですが、わかりやすいようモジュール名と同じにしておきます。$ mkdir libhollow
$ cd libhollow
このディレクトリ内に、自作モジュールのためのファイルを用意します。
ディレクトリ内に、さらにモジュール名と同じディレクトリを作成します。$ cd libhollow
そしてこのディレクトリ内部に __init__.py
を作成します。中身は空でよいので touch
コマンドで作ります。$ touch libhollow/__init__.py
同じくモジュールに含める Python のコードも入れておきます。ここでは libhollow/jackolantern.py
というファイル名で、以下の Python コードを置いておきます。# -*- coding: utf-8 -*-
def call():
print "Trick or Treet"
Python コードの内容としては、"Trick or Treet" と表示される call()
を定義しているだけです。
ここまで見てくると、これが通常の Python パッケージの作りかたと同じであることに気づくかもしれません。Python に、sys.path
上にあるパッケージを import
させるには、まずパッケージ名のディレクトリを作ってソースコードを置き、いっしょに __init__.py
もいれておく必要があります。pip でインストールできる自作モジュールを作る際にも、モジュールのコードや __init__.py
は同じようにモジュール名のディレクトリ内部に置いておくことになります。
続きを読む
python
コメント (0) 2018/11/02 13:02:57
ImageMagick6 を Fedora 26 にインストールする
諸事情により Fedora 26 で ImageMagick を使える環境を用意することになりました。
普通だったら yum install して終わりなのですが、リポジトリに上がっているのはインストールしたい ImageMagick6 ではなく、ImageMagick7 のようでした。
なのでソースからビルドしてみたいと思います。
jpg, png モジュールをインストールする
ImageMagick6 本体をビルドしただけでは、取り扱う画像フォーマットが限定されています。jpg や png を扱えない…というより、ほとんどの画像フォーマットが使えないようです。画像フォーマットのデコーダー等は ImageMagick 本体には含まれておらず、自分で用意してくれということなのだと思います。画像フォーマットのライセンスやらもいろいろ事情がありそうです。
そこで、ImageMagick6 をビルドする際に必要な画像フォーマットのパッケージをインストールしておきます。
以下は jpg, png に関するパッケージです。devel パッケージもインストールしておくことに注意してください。# yum install libjpeg libjpeg-devel
# yum install libpng libpng-devel
Wand の画像フォーマットエラー
jpg, png に関するパッケージをインストールしておかないと、いざ ImageMagick6 を使おうとした時にエラーになります。
python から ImageMagick6 を使える Wand では、以下のようなエラーが発生します。Traceback (most recent call last):
File "wandtest.py", line 4, in <module>
with Image(filename='sample.jpg', format='JPEG') as img:
File "/home/momokan/python/wand/wand/image.py", line 2744, in __init__
self.read(filename=filename, resolution=resolution)
File "/home/momokan/python/wand/wand/image.py", line 2822, in read
self.raise_exception()
File "/home/momokan/python/wand/wand/resource.py", line 222, in raise_exception
raise e
wand.exceptions.MissingDelegateError: no decode delegate for this image format `JPEG' @ error/constitute.c/ReadImage/504
Exception TypeError: TypeError("object of type 'NoneType' has no len()",) in <bound method Image.__del__ of <wand.image.Image: (empty)>> ignored
ImageMagick6 をインストールする
ソースコードは github に上がっています。なのでこれを持ってきましょう。$ git clone https://github.com/ImageMagick/ImageMagick6
そうしたら clone した ImageMagick6 ディレクトリに移動し、configure, make, make install します。
この辺りのビルドの仕方は伝統的な C プログラムですね。$ cd ImageMagick6
$ ./configure
$ make
# make install
configure のオプションにインストールディレクトリなんかもあるはずなのですが、面倒なので特に指定していません。指定しない場合には /usr/local/lib に共有ライブラリ(.so ファイル)がインストールされます。
続きを読む
WEB 技術,
python
コメント (0) 2018/05/07 16:41:26