从python运行javascript代码

PyExecJS的Python项目详细描述


pyexecjs(下线)

寿命结束

这个图书馆不再维修了。错误无法修复(即使 它们是微不足道或必不可少的)。

我们建议用别的图书馆或做叉子。


从python运行javascript代码。

pyexecjs是execjs从ruby移植而来的。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 pick 默认的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和 乔希·皮克。(作为ExecJS的作者)

在麻省理工学院的许可下发布。有关详细信息,请参见LICENSE

更改日志

1.5.0

  • 版本要求放宽为6。

1.4.1

  • 修复了模块级函数的参数。
  • 修正了用管道执行的错误。
  • 修正了错误的解释。

1.4.0

  • 修复了所需的库。
  • 固定的--print-available-runtimes输出顺序。
  • 使用pipe/stdin执行一些javascript运行时(不使用临时的 文件)。

1.3.1

  • 修正了python 2.7中的--print-available-runtimes失败。

1.3.0

  • 添加了cwd参数。

1.2.0

  • 支持的Python3.5
  • 支持Nashorn(Java 8 JavaScript引擎)作为运行时
  • 放弃了对Python2.6和3.2的支持

1.1.0

  • 支持的Python3.4
  • 支持SlimerJS作为运行时
  • 支持phantomjs作为运行时
  • 修复了Windows 8上的JScript运行时

1.0.5

  • 支持的Python3.3
  • 修复了文件句柄泄漏问题
  • 已修复passenger-nginx-4.0的问题

1.0.4

  • 删除了“import execjs”(它阻止python执行setup.py 2.6)

1.0.3

  • javascript源代码嵌入在init.py中。“which”命令是 由纯python重新实现。

1.0.2

  • 支持Python2.6.x。

1.0.1

  • 忘记shell=true被添加到popen中。

1.0.0

  • 第一次释放。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Intellij通过方法中的包查找用法   java中VS代码和打包命名的问题   将java CMS功能集成到具有高度动态内容的网站(Lucene/Mysql/Nosql)的策略   oracle的java类强制转换异常。jdbc。驾驶员OracleConnection   字节码向JVM添加上指令   如何在抽象类中执行java方法?   java是否可以在apache访问日志中排除指定的GET参数?(作者:W7开发环境)   java如何获取已安装音频播放器的列表?   尝试向HS学生展示如何使用Java访问MS数据库   使用正则表达式java对给定行中的特定字符串进行计数   java JOOQ Select查询中的Select计数   方法Java,如何从二维双精度数组中找到特定值?   获取图像URL的java正则表达式   java在切换到新的窗口驱动程序后找不到元素