从Perl调用Python模块

时间:2010-08-09 15:50:36

标签: python perl interop

我在Python中创建了一个模块,它提供了大约十几个功能。虽然它主要在Python中使用,但是有很多旧版用户会从Perl调用它。

插入此模块的最佳方法是什么?我的想法是:

  1. 提供功能作为命令行实用程序并进行system调用
  2. 创建某种服务器并处理RPC调用(例如,通过JSON RPC)
  3. 有任何建议吗?

3 个答案:

答案 0 :(得分:19)

另一个选择是使用Inline::Python直接在Perl脚本中内联Python。

这可能比其他解决方案更简单,只需要一个额外的模块。

答案 1 :(得分:9)

在短期内,最简单的解决方案是使用Inline :: Python。紧接着调用命令行脚本。

从长远来看,使用服务器提供RPC功能或只是调用命令行脚本将为您提供最具前瞻性的解决方案。

为什么?

因为这种方式与Perl或Python无关,因为它是用于构建使用库提供的服务的系统的语言。这两种方法都可以创建一个清晰的,独立于语言的界面,您可以将其用于您采用的任何开发环境。

根据您的需要,任何呈现的选项都可能是“最佳选择”。根据您的需求随时间的变化情况,可能会将不同的选择显示为“最佳”。

我的方法是提出几个问题:

您多久更换一次开发工具。你已经从Perl切换到了Python。你是从Tcl开始去Perl吗?你会在1年,5年或10年内转向令人兴奋的新语言X吗?如果您经常更换工具(无论这意味着什么),请强调跨工具兼容性。

速度有多快?命令行解决方案的启动时间是否正常? Inline :: Python是否会使事情变得太慢(你还在初始化Python解释器,它只是嵌入在你的Perl解释器中)?

根据这些问题的答案,我会做最简单的事情

我的猜测是按顺序表示:

  1. 内联::的Python
  2. 命令行脚本
  3. 构建RPC服务器

答案 2 :(得分:3)

  

提供功能作为命令行实用程序并进行系统调用

工作非常好。这就是使用Python(和Per​​l)这样的程序的方式。