36

独自のビルド メカニズムを使用してICUをコンパイルする必要があります。したがって、質問:

から Makefile を実行するにはどうすればよいsetup.pyですか? 明らかに、インストール中ではなく、ビルドプロセス中にのみ実行したい.

4

3 に答える 3

41

私が通常使用する方法は、問題のコマンドをオーバーライドすることです。

from distutils.command.install import install as DistutilsInstall

class MyInstall(DistutilsInstall):
    def run(self):
        do_pre_install_stuff()
        DistutilsInstall.run(self)
        do_post_install_stuff()

...

setup(..., cmdclass={'install': MyInstall}, ...)

distutilsドキュメントとソースからこれを理解するのにかなりの時間がかかりました。

注: このcmdclassパラメーターを使用して、新しいコマンドを追加することもできます。

于 2009-11-19T15:02:48.247 に答える
2

Python 拡張機能を構築している場合は、distutils/setuptools 拡張機能を使用できます。例えば:

from setuptools import Extension
# or:
# from distutils.extension import Extension
setup(...
      ext_modules = [Extension("pkg.icu",
                               ["icu-sqlite/icu.c"]),
                    ]
      )

拡張機能を構築するための多くのオプションがあります。ドキュメントを参照してください: http://docs.python.org/distutils/setupscript.html

于 2009-11-18T16:20:56.897 に答える
0

distutils を使用して C ライブラリをビルドすることは可能ですが (distutils.core.setup の libraries パラメータを参照)、既に Makefile にあるオプションを複製する必要がある場合があるため、おそらく最も簡単な方法は、インストール コマンドを次のように拡張することです。他の回答で説明し、subprocess モジュールで make を呼び出します。

于 2011-10-28T16:01:13.093 に答える