千家信息网

Python 中怎么调用JS

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,今天就跟大家聊聊有关Python 中怎么调用JS ,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。以一段简单的 JS 脚本为例,将代码写入到文件
千家信息网最后更新 2026年11月03日Python 中怎么调用JS

今天就跟大家聊聊有关Python 中怎么调用JS ,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

以一段简单的 JS 脚本为例,将代码写入到文件中

//norm.js//计算两个数的和function add(num1, num2) {    return num1 + num2;}

其中,定义了一个方法,计算两个数的和

3. 方式一:PyExecJS

PyExecJS 是使用最多的一种方式,底层实现方式是:在本地 JS 环境下运行 JS 代码

支持的 JS 环境包含:Node.js、PyV8、PhantomJS、Nashorn 等

首先,我们需要安装依赖包 PyExecJS

//py_exec_js_demo.py//安装依赖pip3 install PyExecJS

然后,从 JS 文件中读取源码

def js_from_file(file_name):    """    读取js文件    :return:    """    with open(file_name, 'r', encoding='UTF-8') as file:        result = file.read()    return result

最后,使用 execjs 类的compile()方法编译加载上面的 JS 字符串,返回一个上下文对象

import execjsfrom js_code import *# 编译加载js字符串context1 = execjs.compile(js_from_file('./norm.js'))

最后,调用上下文对象的call() 方法执行 JS 方法

其中,参数包含:JS 代码被调的方法名、对应方法的传入参数

# 调用js代码中的add()方法,参数为2和3# 方法名:add# 参数:2和3result1 = context1.call("add", 2, 3)print(result1)

需要注意的,由于 PyExecJS 运行在本地 JS 环境下,使用之前会启动 JS 环境,最终导致运行速度会偏慢

更多功能可以参考:

https://github.com/doloopwhile/PyExecJS

4. 方式二:js2py

js2py作为一个纯 Python 实现的 JS 解释器,可以完全脱离 JS 环境,直接将 JS 代码转换为 Python 代码

首先,安装依赖库

# 安装依赖库pip3 install js2py

然后使用 js2py 中的EvalJs()方法生成一个上下文对象

# 使用获取上下js2py生成一个上下文环境context = js2py.EvalJs()

接着利用上下文对象执行 JS 脚本,转换为 Python 代码

# 执行整段JS代码context.execute(js_content)

最后,利用上下文调用 JS 中的方法,并制定输入参数即可

# 使用上下文context调用具体的函数# 函数名:add# 参数:1,2result = context.add(1, 2)print(result)

需要注意是,如果 JS 是很长的混淆代码,转换为 Python 的过程可能会报错

更多功能可以参考:

https://github.com/PiotrDabkowski/Js2Py

5. 方式三:Node.js

实际上是使用 Python 的os.popen执行 node 命令,执行 JS 脚本

首先,确保本地已经安装了 Node.js 环境

修改 JS 脚本,新增一个导出函数 init ,方便内部函数被调用

//计算两个数的和function add(num1, num2) {    return num1 + num2;}//新增一个导出函数(node方式)module.exports.init = function (arg1, arg2) {    //调用函数,并返回    console.log(add(arg1, arg2));};

然后,将调用 JS 方法的命令组成一个字符串

# 组成调用js的命令# node命令:node -ecmd = 'node -e "require(\\"%s\\").init(%s,%s)"' % ('./norm', 3, 5)

最后,通过 os.popen 执行命令即可

pipeline = os.popen(cmd)# 读取结果result = pipeline.read()print('结果是:', result)

6. 方式四:PyV8

PyV8 是 Google 将 Chrome V8 引擎用 Python 封装的依赖库

它不依赖本地 JS 环境,运行速度很快

import PyV8from js_code import js_from_filewith PyV8.JSContext() as ctx:    ctx.eval(js_from_file('./norm.js'))# 调用js函数,指定参数ctx.locals.add(1, 2)

看完上述内容,你们对Python 中怎么调用JS 有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

方法 代码 上下 环境 上下文 函数 参数 方式 命令 对象 脚本 运行 两个 内容 字符 字符串 文件 更多 功能 结果 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 精品咖啡豆 广州百单互联网科技有限公司 互联网科技公司华为 互联网属科技 广州善班互联网科技 互联网金融 科技创新 大白互联网科技 联恩商钥互联网科技有限公司 山东吉时兔互联网科技有限公司 现代科技和互联网有关系吗 中盈科技互联网信息有限公司 汽车互联网创新科技园 栖莱科技互联网股份有限公司 中国航天科技大学国际工业互联网 互联网科技商业 新兴科技互联网创新大赛颁奖典礼 西安小鹰速贷互联网科技有限公司 启辰互联网科技 2021世界互联网领先科技成果发布 恒生科技指数 中概互联网 奔汉互联网科技 中国最先进互联网科技公司 团飞科技与伯堂互联网服务平台 互联网科技创新服务 中国航天科技大学国际工业互联网 黑云互联网科技有限公司 互联网科技数字货币 广州互联网高科技取餐柜 云南互联网科技学费 武汉亿视互联网科技有限公司
0