Jak mogę uruchomić Makefile w setup.py?

Muszę skompilować ICU używając własnego mechanizmu budowania. Dlatego pytanie:

Jak mogę uruchomić Makefile z setup.py? Oczywiście chcę, aby działał tylko podczas procesu budowania, a nie podczas instalacji.

Author: Georg Schölly, 2009-11-18

3 answers

Metoda, której zwykle używam, polega na nadpisaniu danego polecenia:

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}, ...)
Zajęło mi to sporo czasu, aby dowiedzieć się z distutils dokumentacji i źródła, więc mam nadzieję, że to oszczędzi Ci bólu.

Uwaga: Możesz również użyć tego parametru cmdclass, aby dodać nowe polecenia.

 37
Author: Walter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-04 18:37:18

Jeśli budujesz rozszerzenie Pythona, możesz użyć rozszerzeń distutils / setuptools. Na przykład:

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

Istnieje wiele opcji budowania rozszerzeń, Zobacz dokumenty: http://docs.python.org/distutils/setupscript.html

 1
Author: resi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-18 16:20:56

Możliwe jest budowanie bibliotek C z distutils (patrz parametr libraries distutils.rdzeń.konfiguracja), ale być może będziesz musiał zduplikować opcje, które są już w pliku Makefile, więc najprostszą rzeczą do zrobienia jest prawdopodobnie rozszerzenie polecenia install, jak wyjaśniono w innych odpowiedziach i wywołanie make z modułem podprocess.

 0
Author: Éric Araujo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-28 16:01:13