« 2008年01月 | メイン | 2008年03月 »

2008年02月 アーカイブ

2008年02月04日

Jythonを使ってみるその2

Jythonではjarファイルのパスをsysy.pathに追加しておけば、 そのjarファイルの中からPythonスクリプトとJavaクラスファイルの両方を読みだすことができます。

# bicycle.py
class Bicycle(object):
  def call(self):
    print("Oh, bicycle repair man !")
// Nudge.java
public class Nudge {
  public void call() {
    System.out.println("Nudge nudge nudge nudge.");
  }
}
C:\home\python>javac Nudge.java

C:\home\python>jar cvf py.jar Nudge.class bicycle.py
マニフェストが追加されました。
Nudge.class を追加中です。(入 = 403) (出 = 276)(31% 収縮されました)
bicycle.py を追加中です。(入 = 82) (出 = 76)(7% 収縮されました)

C:\home\python>mv Nudge.* escape

C:\home\python>mv bicycle.* escape

C:\home\python>java -jar c:\jython2.2.1rc1\jython.jar
Jython 2.2.1rc1 on java1.6.0_03
Type "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path.append("py.jar")
>>> import Nudge
*sys-package-mgr*: processing modified jar, 'C:\home\python\py.jar'
>>> Nudge().call()
Nudge nudge nudge nudge.
>>> from bicycle import Bicycle
>>> Bicycle().call()
Oh, bicycle repair man !

なかなか良い感じですね。 空飛ぶモンティ・パイソン日本語復活版BOXは2/20発売です。忘れずに!

追記: CPythonでは2.3からzipimport機能があるので、上記と同様に書いておけば jarファイルのなかからPythonファイルを探してくれますね!