2010-10-30 76 views

回答

3
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。

14

实际上,有一个分发/ setuptools的功能,称为可用于这个“功能”。 它被明确设计为让setup.py根据--with-xxx--without-xxx命令行选项做不同的事情。

  • blog post给出了一个很好的介绍,我找不到在这个时候任何更好的文档(除了分发源 - the Feature classfeatures keyword)。
  • 忍者项目的setup.py使用功能为您的确切目的,它可能是一个很好的工作模板。
  • 的simplejson setup.py也做,只不过它编码总是试图建立C的扩展功能,它定义,而当建筑失败落回到正常的纯Python类似的东西;这也可能对你的目的有用。
相关问题