【发布时间】:2009-02-04 13:42:04
【问题描述】:
我有一个 Python 的 C 扩展模块,我想让 Rubyists 可以使用它。
源代码有许多 C 模块,只有一个依赖于 Python。其余的仅依赖于彼此和标准库。我可以用python setup.py build 以通常的方式构建它。
我一直在尝试使用 newgem 添加 Ruby 支持,我可以使用 rake gem 构建扩展版本。然而,合并后的源代码有一个丑陋的目录布局(混合了 Gem 风格和 Setuptools 风格的结构),并且构建过程很杂乱。
我不能只将所有源代码保存在同一个目录中,因为mkmf 会自动选择依赖 Python 的模块并尝试构建它,而用户不必安装 Python 来编译一个不会'不能使用。我目前的技巧是让extconf.rb 将独立于 Python 的源文件复制到与依赖于 Ruby 的扩展模块相同的目录中。
有没有更明智的方法让代码对两种语言都可用?我应该在单独的 Gem 中复制与 Python 无关的代码吗?我应该将独立代码作为使用 autotools 构建的单独库发布吗?是否有可以跳过不需要的模块的mkmf 版本?
【问题讨论】:
标签: python ruby setuptools newgem