我已经创建了一个C扩展,我想使我Python包(使用设置工具),如果只有一个命令行的选择是通过。什么是最简单的方式做到这一点?

我似乎找不到任何简单的办法去了解这一点。

有帮助吗?

解决方案

ext_modules = []
if '--add-this' in sys.argv:
    ext_modules.append(Extension(...))
    sys.argv.remove('--add-this')
setup(...
      ext_modules = ext_modules
)

这是哈克,但可能是最容易的。更先进的方法是扩展分发类以支持一个标志,说--with-modules然后自定义ext_modules内部finalize_options。

其他提示

实际上,有一个分配/设置工具的功能,称为"功能",可以用于此。这是明确地设计有setup.py 做不同的事情基础 --with-xxx--without-xxx 命令行的选择。

  • 博客 给出了一个很好的介绍,我不能找到任何更好的文件在这个时候(不管分发源 该特征类特征的关键字).
  • 该项目的神 setup.py 采用功能为你的确切目的,它可能是一个良好的模板,从工作。
  • 该simplejson setup.py 也不类似,除了它的编码来一直试图建立C扩展功能定义,以及落后地纯-蟒蛇,当建设失败;这也可能是有用的你的目的。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top