2010-08-09 162 views
7

我在Python中創建了一個模塊,它提供了大約十幾種功能。雖然它將主要在Python中使用,但仍有很多遺留用戶將從Perl中調用它。從Perl調用Python模塊

插入此模塊的最佳方式是什麼?我的想法是:

  1. 提供的功能作爲命令行實用程序,使通話system
  2. 建立某種形式的服務器和處理RPC調用(比如,通過JSON RPC)

任何建議?

回答

19

另一種選擇是直接在Perl腳本中使用Inline::Python來嵌入Python。

這可能比其他解決方案更簡單,只需要一個額外的模塊。

+0

在線:: Python的效果很好,可以有雖然通過某些類型的變量時會有些奇怪。 – GWW 2010-08-09 17:15:58

+0

謝謝。我喜歡所有的答案,但這似乎很便攜。 – Escualo 2010-08-10 15:24:51

3

提供的功能作爲命令行實用程序,使系統調用

作品真的很好。這是像Python(和Per​​l)這樣的程序打算使用的方式。

+0

難以打敗簡單且經過充分測試,不是嗎? – dawg 2010-08-09 16:47:54

+5

當然,如果他們需要在Python解釋器的啓動成本(預期執行次數)太高的環境中運行。作爲一個例子,就像一個應用程序或Web服務器一樣。 Perl旨在以適合情況的方式使用Perl。 – DVK 2010-08-09 17:43:58

+1

@DVK:Python可以以各種方式使用,也適用於不同的情況。你知道什麼情況適用於這個問題嗎? – 2010-08-09 19:50:24

9

在短期內,最簡單的解決方案是使用Inline :: Python。緊接着調用一個命令行腳本。

從長遠來看,使用服務器提供RPC功能或只是調用命令行腳本將爲您提供最有前途的解決方案。

爲什麼?

因爲這種方式與Perl或Python無關,因爲它是用於構建消耗庫所提供服務的系統的語言。無論哪種方法都可以創建一個清晰的獨立於語言的界面,您可以使用您採用的任何開發環境。

根據您的需要,任何提供的選項可能是「最佳選擇」。根據您的需求隨着時間的推移而變化,不同的選擇可能會顯示爲「最佳」。

我的這種做法是要問幾個問題:

你經常改變的開發工具。你已經從Perl切換到Python。你是從Tcl開始學習Perl嗎?你會在1年,5年或10年內轉向令人興奮的新語言X嗎?如果您經常更換工具(無論如何)強調交叉工具兼容性。

速度有多快?命令行解決方案的啓動時間可以嗎? Inline :: Python是否會減慢速度(你還在初始化一個Python解釋器,它只是嵌入到你的Perl解釋器中)?

根據這些問題的答案,我會做最簡單的事情,很可能工作

我的猜測是,爲了這意味着:

  1. 在線:: Python的
  2. 命令行腳本
  3. 建立一個RPC服務器