跳转到主要内容

从Python运行JavaScript代码

项目描述

PyExecJS (EOL)

已结束生命

这个库不再维护。不会修复错误(即使它们很 trivial 或 essential)。

我们建议使用其他库或创建一个分支。


从Python运行JavaScript代码。

PyExecJS是Ruby中ExecJS的移植。PyExecJS 自动选择最佳的可用运行时来评估您的JavaScript程序。

一个简短的例子

>>> 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

支持的运行时

一等支持(提供并测试了运行时类)

二等支持(提供了运行时类但未测试)

安装

$ pip install PyExecJS

$ easy_install PyExecJS

详细信息

如果指定了EXECJS_RUNTIME环境变量,PyExecJS将默认选择JavaScript运行时

>>> execjs.get().name # this value is depends on your environment.
>>> os.environ["EXECJS_RUNTIME"] = "Node"
>>> execjs.get().name
'Node.js (V8)'

您可以通过execjs.get()选择JavaScript运行时

>>> default = execjs.get() # the automatically picked runtime
>>> default.eval("1 + 2")
3
>>> import execjs.runtime_names
>>> jscript = execjs.get(execjs.runtime_names.JScript)
>>> jscript.eval("1 + 2")
3
>>> import execjs.runtime_names
>>> node = execjs.get(execjs.runtime_names.Node)
>>> node.eval("1 + 2")
3

PyExecJS的优点是您不需要关心JavaScript环境。特别是,它在Windows环境中工作,无需安装额外的库。

PyExecJS的一个缺点是性能。PyExecJS通过文本与JavaScript运行时通信,因此速度较慢。另一个缺点是它不完全支持特定于运行时的功能。

PyV8 可能是某些用例的更好选择。

许可

版权所有 (c) 2016 Omoto Kenji。版权所有 (c) 2011 Sam Stephenson 和 Josh Peek。(作为 ExecJS 的作者)

在 MIT 许可证下发布。详情请参阅 LICENSE

变更日志

1.5.0

  • 放宽了对 six 的版本要求。

1.4.1

  • 修复了模块级函数的参数。

  • 修复了通过管道执行时的错误。

  • 修复了错误地抛出异常。

1.4.0

  • 修复了所需的库。

  • 修复了 --print-available-runtimes 的输出顺序。

  • 通过管道/标准输入执行某些 JavaScript 运行时(无需临时文件)。

1.3.1

  • 修复了在 Python 2.7 中 --print-available-runtimes 失败的问题。

1.3.0

  • 添加了 cwd 参数。

1.2.0

  • 支持 Python 3.5。

  • 支持 Nashorn(Java 8 JavaScript 引擎)作为运行时。

  • 停止支持 Python 2.6 和 3.2。

1.1.0

  • 支持 Python 3.4。

  • 支持 SlimerJS 作为运行时。

  • 支持 PhantomJS 作为运行时。

  • 修复了 Windows 8 上的 JScript 运行时。

1.0.5

  • 支持 Python 3.3。

  • 修复了文件句柄泄漏。

  • 修复了与 passenger-nginx-4.0 的问题。

1.0.4

  • 移除了 "import execjs"(它阻止 Python 2.6 执行 setup.py)。

1.0.3

  • JavaScript 源代码嵌入在 init.py 中。"which" 命令由纯 Python 实现。

1.0.2

  • 支持 Python 2.6.x。

1.0.1

  • 将遗忘的 shell=True 添加到 Popen。

1.0.0

  • 首次发布。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码发行版

PyExecJS-1.5.1.tar.gz (13.3 kB 查看哈希值)

上传时间 源代码

支持者

AWSAWS 云计算和安全赞助商 DatadogDatadog 监控 FastlyFastly CDN GoogleGoogle 下载分析 MicrosoftMicrosoft PSF 赞助商 PingdomPingdom 监控 SentrySentry 错误日志 StatusPageStatusPage 状态页面