Calling Python from Ruby


Question

I have a compiled Python library and API docs that I would like to use from Ruby.

Is it possible to load a Python library, instantiate a class defined in it and call methods on that object from Ruby?

1
28
9/9/2010 6:33:49 PM

Accepted Answer

This article gives some techniques for running Ruby code from Python which should also be applicable in the reverse direction (such as XML-RPC or pipes) as well as specific techniques for running Python code from Ruby. In particular rubypython or Ruby/Python look like they may do what you want.

14
9/9/2010 6:47:46 PM

It sounds like you would want to use something like Apache Thrift which allows either your python or your ruby code to be a server/client and call each other. http://thrift.apache.org/

You can instantiate your objects in ruby and or in python based on your thrift definition. This is an example from the thrift website.

struct UserProfile {
    1: i32 uid,
    2: string name,
    3: string blurb
  }
  service UserStorage {
    void store(1: UserProfile user),
    UserProfile retrieve(1: i32 uid)
  }

Basically your ruby or python will be able to call store() and retrieve() and create UserProfile objects etc.


Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon