2024-06-28 11:02:29 发布
网友
我需要使用它自己的构建机制编译ICU。因此,问题是:
如何从setup.py运行生成文件?显然,我只希望它在构建过程中运行,而不是在安装时运行。
setup.py
如果要构建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
可以使用distutils构建C库(请参见distutils.core.setup的libraries参数),但可能必须复制Makefile中已有的选项,因此最简单的方法可能是按照其他应答中的说明扩展install命令,并使用子流程模块调用make。
我通常使用的方法是重写有问题的命令:
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文档和源代码中找到答案,所以我希望它能帮您省去痛苦。
distutils
注意:您还可以使用这个cmdclass参数添加新命令。
cmdclass
如果要构建python扩展,可以使用distutils/setuptools扩展。例如:
构建扩展有很多选项,请参见文档:http://docs.python.org/distutils/setupscript.html
可以使用distutils构建C库(请参见distutils.core.setup的libraries参数),但可能必须复制Makefile中已有的选项,因此最简单的方法可能是按照其他应答中的说明扩展install命令,并使用子流程模块调用make。
我通常使用的方法是重写有问题的命令:
我花了很长时间才从
distutils
文档和源代码中找到答案,所以我希望它能帮您省去痛苦。注意:您还可以使用这个
cmdclass
参数添加新命令。相关问题 更多 >
编程相关推荐