2009-04-15 11 views
4

私はたくさんのPerlライブラリ(実際にはPerlクラス)を書いており、私はそれらを私のPythonアプリケーションで使いたいと思っています。 SWIGを使用したり、Python用のPerl APIを書かなければ、これを行うための自然な方法がありますか? PHPのPerl interfaceと同様の方法を求めています。 PythonでPerlのような種類の作業がない場合。 PythonでPerlクラスを使用する最も簡単な方法は何ですか?PythonのPerlライブラリを使用するにはどうすればよいですか?

答えて

8

私は個人的に、XML/RPCやその他のメカニズムを介してサービスとしてPerlライブラリを公開します。そうすればPythonアプリケーションから自然に呼び出すことができます。

+0

現時点では、私はPythonで書き直すか、ソケットを使って2つの言語を通信するためのAPIを実装する2つのオプションを検討しています。 – systemsfault

1

チェックアウトPyPerl

警告:PyPerlは現在メンテナンスされていないため、安定性が必要な場合は使用しないでください。

+3

実際には、安定性は私にとって重要な指標です。 – systemsfault

+0

おそらくあなたのPerlクラスをPythonに移植するのが最善でしょう。 AFAIK、PyPerlは現在、PythonコードからPerlコードを呼び出す唯一の簡単な方法です。 – splicer

+0

、またはpythonコードをperl:Dに移植します。perlコードの量がPythonコードの量よりはるかに多いので、時間がかかりません。 しかし、この場合、私はPythonでコードを書く機会を逃してしまいますが、これは私が推測できることです:)。 – systemsfault

2

PythonがPerlとともにParrot VMで実行されている可能性があります。 4月1、2009年PEP 401が公開され、FLUFL読み取りの公式行為の一つであった:

  • は、Cは、歳未満のプログラマーによって、ほぼ普遍的拒否と20世紀の言語であることを認識します30の場合、CPythonの実装はPython 2.6.2と3.0.2のリリースで終了します。その後、Pythonのリファレンス実装は、Parrot仮想マシンを対象とします。 Pythonの別の実装(例:Jython、IronPython、PyPy)は、正式には推奨されていませんが許容されています。
+2

あなたは困っています:「この文書はPython Steering Unionの財産です(存在しないPython Secret Undergroundと混同しないでください)。これは読んでも大丈夫ですが、引用、コピー、変更、または配布することさえ考えないでください」 – mpeters

+0

ステアリングユニオンは再考されますか? – gimel

+1

「4月1日」の部分はおそらく太字にしてください。私はもっ​​と注意深く読むまで混乱しました。 – alberge

3

"PythonでPerlのクラスを使用する最も簡単な方法は何ですか?"

最も簡単です。 PerlをPythonに書き直してやる。真剣に。一番簡単なのは言語—を選択するだけです。 Perlを後ろに残すことは大きな損失ではありません。クラスをPythonに書き直すと、少しずつ改良する機会が与えられます。

あまり簡単ではありません。 Pythonのsubprocessモジュールを使用してPerlアプリケーションを実行します。これは問題なくPerlアプリケーションでPerlクラスを使用します。 PerlはPythonのからの入力を取得し、Pythonの

someApp.py | something.pl | finalStep.py 

これは、1に(時々)、3つの並行プロセスにあなたのアプリケーションを壊すプロセッサリソースの多くを使用して実行されているという利点を有しへの出力を生成しますので、あなたは簡単にパイプラインを作成することができます/ 3時間。

他のすべてはそれほど簡単ではありません。

+0

実際には、私はPythonのためのPerl APIによってあなたが2番目のステップで説明したのと同じことを意味しようとしました。私はPerlライブラリがpmファイルであり、スタンドアロンの実行可能ファイルではないので、Python用の小さなapiを提供する必要があります。したがって、pyライブラリにアクセスできるplファイルを作成する必要があります。 – systemsfault

4

私はそれを試していませんが、Inline::PythonはPerlからPythonを呼び出すことができます。

あなたはPythonアプリケーションを読み込み、PerlオブジェクトにアクセスするためにI :: Pに付属のperl pythonパッケージを使用するために、perlの細いビットを使用できるはずです。

関連する問題