Вызов модуля Python из Perl - PullRequest
       4

Вызов модуля Python из Perl

8 голосов
/ 09 августа 2010

Я создал модуль на Python, который обеспечивает около десятка функций.Хотя он будет в основном использоваться из Python, есть немалая часть старых пользователей, которые будут вызывать его из Perl.

Как лучше всего подключить этот модуль?Мои мысли таковы:

  1. Предоставьте функции в качестве утилит командной строки и выполните system звонки
  2. Создайте сервер и обработайте вызовы RPC (скажем, через JSON RPC)

Любой совет?

Ответы [ 3 ]

19 голосов
/ 09 августа 2010

Еще один вариант - встроить Python непосредственно в скрипт Perl, используя Inline::Python.

. Это может быть проще, чем в других решениях, и требует только одного дополнительного модуля.*

9 голосов
/ 10 августа 2010

В краткосрочной перспективе самое простое решение - использовать Inline :: Python. За ним следует вызов сценария командной строки.

В долгосрочной перспективе использование сервера для обеспечения функциональности RPC или простой вызов сценария командной строки даст вам наиболее перспективное решение.

Почему?

Так как вы не привязаны к Perl или Python как к языку, используемому для построения систем, которые используют службы, предоставляемые вашей библиотекой. Любой метод создает понятный, независимый от языка интерфейс, который можно использовать в любой среде разработки, которую вы принимаете.

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

Мой подход к этому - задать пару вопросов:

Как часто вы меняете инструменты разработки. Вы перешли на Python из Perl. Вы начали с Tcl и пошли в Perl? Собираетесь ли вы перейти на новый захватывающий язык X через 1, 5 или 10 лет? Если вы меняете инструменты «часто» (что бы это ни значило), подчеркивайте их совместимость.

Насколько быстро достаточно быстро? Время запуска решений командной строки в порядке? Inline :: Python слишком сильно тормозит (вы все еще инициализируете интерпретатор Python, он просто встроен в ваш интерпретатор Perl)?

Основываясь на ответах на эти вопросы, я бы сделал простейшую вещь, которая сработает .

Я думаю, это означает, что по порядку:

  1. Инлайн :: Python
  2. Скрипты командной строки
  3. Сборка сервера RPC
3 голосов
/ 09 августа 2010

Обеспечение функциональности в качестве утилит командной строки и выполнение системных вызовов

Работает действительно хорошо.Это способ использования таких программ, как Python (и Perl).

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