我有一个已编译的Python库和API文档,希望能在Ruby中使用。
是否可以加载Python库,在Ruby中实例化其中定义的类,并调用该对象的方法?
是否可以加载Python库,在Ruby中实例化其中定义的类,并调用该对象的方法?
本文提供了一些在Python中运行Ruby代码的技巧,这些技巧也适用于反向操作(如XML-RPC或管道),以及运行Ruby中Python代码的特定技巧。特别是rubypython或Ruby/Python看起来可能会满足你的需求。
https://github.com/mrkn/pycall.rb
这里是一个简单的示例,用于调用Python的math.sin函数并将其与Ruby中的Math.sin进行比较:
require 'pycall/import'
include PyCall::Import
pyimport :math
math.sin(math.pi / 4) - Math.sin(Math::PI / 4) # => 0.0
struct UserProfile {
1: i32 uid,
2: string name,
3: string blurb
}
service UserStorage {
void store(1: UserProfile user),
UserProfile retrieve(1: i32 uid)
}
基本上,你的ruby或python将能够调用store()
和retrieve()
函数以及创建对象等。
即使您能让这个工作起来,您可能需要考虑这是否是最佳的架构选择。您可能会遇到各种版本控制问题,试图维护这样一个庞然大物。
如果您真的找不到等效的Ruby库(或者您想利用Python进行大量投资),请考虑使用队列(例如RabbitMQ)来实现消息传递设计。然后,您可以将Python部分保持为Python,将Ruby部分保持为Ruby,而不尝试维护弗兰肯斯坦式的构建环境。