7

Python拡張モジュールの構築に利用できるドキュメントのほとんどはdistutilsを使用していますが、代わりに適切なpythonautoconfおよびautomakeマクロを使用してこれを実現したいと思います。

まさにこれを行うオープンソースプロジェクトがあるかどうか知りたいのですが。私が見つけたもののほとんどは、setup.pyファイルに依存することになります。そのアプローチを使用することは機能しますが、残念ながら、モジュールのソースファイルに変更を加えるたびにソースツリー全体を再構築することになります。

4

2 に答える 2

14

というディレクトリを持つプロジェクトがあると仮定するとsrc、次の手順に従って、autotools を使用してビルドおよびパッケージ化された Python 拡張機能を取得します。

Makefile.am ファイルを作成する

まず、プロジェクトのルートに 1 つの Makefile.am を作成する必要があります。基本的には (排他的ではありません)、処理する必要があるサブディレクトリをリストします。次のような結果になります。

SUBDIRS = src

ディレクトリ内の2番目のものは、src実際にPython拡張機能をコンパイルするための指示を保持します。次のようになります。

myextdir = $(pkgpythondir)
myext_PYTHON = file1.py file2.py

pyexec_LTLIBRARIES = _myext.la

_myext_la_SOURCES = myext.cpp
_myext_la_CPPFLAGS = $(PYTHON_CFLAGS)
_myext_la_LDFLAGS = -module -avoid-version -export-symbols-regex initmyext
_myext_la_LIBADD = $(top_builddir)/lib/libhollow.la

EXTRA_DIST = myext.h

configure.ac を書きます

このファイルは、プロジェクトのルート ディレクトリに作成する必要があり、すべてのライブラリ、プログラム、またはコンパイラ、リンカー、ライブラリなど、プロジェクトをビルドする必要があるあらゆる種類のツールをリストする必要があります。

私のような怠惰な人は、通常、ゼロから作成することはしません。使用しているautoscanものを探してconfigure.scan、実際のconfigure.ac.

automakePython のものが必要になることを知らせるには、これを に追加しますconfigure.ac

dnl python checks (you can change the required python version bellow)
AM_PATH_PYTHON(2.7.0)
PY_PREFIX=`$PYTHON -c 'import sys ; print sys.prefix'`
PYTHON_LIBS="-lpython$PYTHON_VERSION"
PYTHON_CFLAGS="-I$PY_PREFIX/include/python$PYTHON_VERSION"
AC_SUBST([PYTHON_LIBS])
AC_SUBST([PYTHON_CFLAGS])

要約

基本的に、automakePython の処理方法を知っている組み込みの拡張機能があります。configure.acそれをファイルに追加するだけで、この機能をMakefile.am.

PyGtk は間違いなく素晴らしい例ですが、かなり大きいので、Guakeのような別のプロジェクトをチェックしたくなるかもしれません。

于 2012-12-04T20:22:22.087 に答える
4

すべての PyGTK 拡張機能は autotools を使用するため、PyGTK の側面ですべてが解決されない場合は、PyGTK ソース コードを確認する価値があります。さらに、これは私が書いたもので、より単純です。

于 2008-11-04T13:10:44.060 に答える