Вызов Python из Ruby - PullRequest
       6

Вызов Python из Ruby

28 голосов
/ 09 сентября 2010

У меня есть скомпилированная библиотека Python и документы по API, которые я хотел бы использовать из Ruby.

Можно ли загрузить библиотеку Python, создать экземпляр определенного в ней класса и вызвать методы из этого объекта из Ruby

Ответы [ 5 ]

14 голосов
/ 09 сентября 2010

В этой статье приводятся некоторые методы запуска кода Ruby из Python, которые также должны применяться в обратном направлении (например, XML-RPC или каналы), а также специальные методы запуска кода Python из Ruby.В частности rubypython или Ruby / Python выглядят так, как будто они могут делать то, что вы хотите.

5 голосов
/ 20 августа 2012

Звучит так, как будто вы хотите использовать что-то вроде Apache Thrift, которое позволяет либо вашему питону, либо вашему рубиновому коду быть сервером / клиентом и вызывать друг друга.http://thrift.apache.org/

Вы можете создавать экземпляры ваших объектов в ruby ​​и / или python, основываясь на вашем определении экономности.Это пример с благотворительного веб-сайта.

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

В основном ваш рубин или питон смогут вызывать store() и retrieve(), создавать UserProfile объекты и т. Д.

4 голосов
/ 20 августа 2012

Эта небольшая библиотека делает это очень просто: https://github.com/steeve/rupy

2 голосов
/ 14 сентября 2010

Даже если вы можете сделать эту работу, вы можете подумать, если это лучший архитектурный выбор.Вы можете столкнуться со всеми видами адского управления версиями, пытаясь поддерживать такого зверя.

Если вы действительно не можете найти эквивалентную библиотеку Ruby (или вы хотите использовать большие инвестиции в Python), подумайте об использованииочередь (как RabbitMQ) для реализации дизайна передачи сообщений.Тогда вы можете оставить свои биты Python Python и свои Ruby биты Ruby и не пытаться поддерживать среду сборки Frankenstein.

0 голосов
/ 09 сентября 2010

Вы на Windows?Не могли бы вы создать DLL или COM-объект из вашей библиотеки Python и вызвать его с помощью Ruby's Win32Api или Win32Ole ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...