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.
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.
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
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.
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