我已经创建了一个C扩展,只有在传递了命令行选项时,我才能在我的Python包(使用setuptools)中启用它。最简单的方法是什么?为python包制作可选C扩展的最简单方法是什么?
我似乎无法找到任何直接的方法来解决这个问题。
我已经创建了一个C扩展,只有在传递了命令行选项时,我才能在我的Python包(使用setuptools)中启用它。最简单的方法是什么?为python包制作可选C扩展的最简单方法是什么?
我似乎无法找到任何直接的方法来解决这个问题。
ext_modules = []
if '--add-this' in sys.argv:
ext_modules.append(Extension(...))
sys.argv.remove('--add-this')
setup(...
ext_modules = ext_modules
)
这是hacky,但可能是最简单的。更高级的方法是扩展Distribution类以支持标志,例如--with-modules
,然后在finalize_options内部定制ext_modules。
实际上,有一个分发/ setuptools的功能,称为可用于这个“功能”。 它被明确设计为让setup.py根据--with-xxx
和--without-xxx
命令行选项做不同的事情。