从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
支持的运行时
二级支持(运行时类是私有的,但未测试)
- Apple JavaScriptCore-包含在Mac OS X中
- Microsoft Windows Script Host (jscript)
- SlimerJS
- Mozilla SpiderMonkey
安装
$ 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
- 第一次释放。