RubyのExecJSをPythonに移植しました

ExecJSはRubyからJavaScriptのコードを実行できるライブラリです。

ExecJSは、もしrubyracerなどJavaScriptライブラリがあればそれを利用し、さもなくばコンピュータからNode.jsなどのインタープリタを検索してきます。JScriptも使えるため、自前でV8をビルドする手間なしに、WindowsでRubyからJavaScriptを利用出来るのです。

Ruby on RailsもExecJSを使っている(らしい)。

これをPythonに移植しました。

    >>> import execjs
    >>> execjs.eval("'red yellow blue'.split(' ')")
    ['red', 'yellow', 'blue']
    >>> ctx = execjs.compile("""
    ...     function add(x, y) {
    ...         return x + y;
    ...     }
    ... """)
    >>> ctx.call("add", 1, 2)
    3

PyV8がインストールされていればそれを使い、さもなくばNode.js, JavaScriptCore,SpiderMonkey,JScriptを探してきて使います。
PyPIとGithubで公開しています。

まぁ、PyV8は

$ pip install PyV8

だけでWindowsにも簡単にインストール出来るので、わざわざ遅いPyExecJSを使う必要性は低いと思いますが。