2010-10-30 73 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類似的東西;這也可能對你的目的有用。
相關問題