2010-08-09 5 views
7

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

Каков наилучший способ подключиться к этому модулю? Мои мысли:

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

Любой посоветуете?

ответ

19

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

Это может быть проще других решений и требуется только один дополнительный модуль.

+0

Инлайн :: Python работает достаточно хорошо, там может будь то странность при передаче определенных видов переменных. – GWW

+0

Спасибо. Мне понравились все ответы, но это кажется очень портативным. – Escualo

3

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

работает очень хорошо. Именно так используются программы, такие как Python (и Perl).

+0

Трудно бить просто и хорошо протестировано, не так ли? – dawg

+5

За исключением, конечно, если они должны запускаться в среде, где стоимость запуска интерпретатора Python (раз # ожидаемых исполнений) слишком высока. Например, как приложение или веб-сервер. То, как Perl предназначено для использования в подходящем для ситуации способом. – DVK

+1

@DVK: Python может использоваться различными способами, также, каждый из которых подходит для разных ситуаций. Вы знаете, какая ситуация относится к этому вопросу? –

9

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

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

Почему?

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

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

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

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

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

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

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

  1. Инлайн :: Python
  2. командной строки скрипты
  3. Построить сервер RPC
Смежные вопросы