endaaman.com

2017-09-02

Tips

autoconfでPythonのプロジェクトを扱うときのメモ

AM_PATH_PYTHONを使う

Linux向けに配布するならautoconfがやはり非常に便利で、とりあえずこれに乗せておけばバージョニングとかも面倒を見てくれて、使う側も何も考えずに ./configure && make && sudo make installでインストールできるようになる。

このautoconfだが、C/C++だけでなくPythonのソフトウェアの配布にも使うことができる。

configure.acAM_PATH_PYTHON を指定するとPython向けになる。

Makefile.am には、 hoge_PYTHON に指定したものが ${prefix}/lib/pythonX.X/site-packages/hoge/__pychache__/ 以下に、 bin_SCRIPTS に指定したものは ${prefix}/bin 以下に、make install したときに配置されるようになる。

configure.ac

AC_PREREQ([2.69])
AC_INIT(hoge, 0.0.1)
AM_INIT_AUTOMAKE([foreign])
AM_PATH_PYTHON
AC_OUTPUT([
Makefile
src/Makefile
])

./src/Makefile.am

bin_SCRIPTS = hoge
hogedir = $(pythondir)/hoge
hoge_PYTHON = hoge.py

./src/hoge.py

ここに本体の処理を書く。 def main(): なエントリポイントの定義だけ書いておく。

def main():
    # メイン処理

./src/hoge

エントリポイントからはmainの関数を実行する。${prefix}/lib/pythonX.X/site-packages/hoge/__pychache__/ 以下に配置されるので、そこから import できるというわけであります

#!/usr/bin/env python3
import sys, hoge

if __name__ == '__main__':
    sys.exit(hoge.main())

こんな感じでどうでしょう


©2024 endaaman.com