那么 pyjs 怎么样?
从以上网站可以看到:
pyjs是一个适用于Web和桌面的Rich Internet Application(RIA)开发平台。使用pyjs,您可以完全使用Python编写您的JavaScript驱动的Web应用程序。
pyjs
不再维护(最后一次提交是在2015年9月22日)。 - Franck Dernoncourt这是一个Python封装的SeaMonkey Javascript解释器... http://pypi.python.org/pypi/python-spidermonkey
这个问题并不新鲜,但出现了一些替代方案:
import { py, python } from 'pythonia'
const np = await python('numpy')
const plot = await python('matplotlib.pyplot')
// Fixing random state for reproducibility
await np.random.seed(19680801)
const [mu, sigma] = [100, 15]
// Inline expression evaluation for operator overloading
const x = await py`${mu} + ${sigma} * ${np.random.randn(10000)}`
// the histogram of the data
const [n, bins, patches] = await plot.hist$(x, 50, { density: true, facecolor: 'g', alpha: 0.75 })
console.log('Distribution', await n) // Always await for all Python access
await plot.show()
python.exit()
通过 CommonJS(不使用顶层 await):
const { py, python } = require('pythonia')
async function main() {
const np = await python('numpy')
const plot = await python('matplotlib.pyplot')
...
// the rest of the code
}
main().then(() => python.exit()) // If you don't call this, the process won't quit by itself.
从 Python 中访问 JS:
from javascript import require, globalThis
chalk, fs = require("chalk"), require("fs")
print("Hello", chalk.red("world!"), "it's", globalThis.Date().toLocaleString())
fs.writeFileSync("HelloWorld.txt", "hi!")
PyExecJS 能够使用 PyV8、Node、JavaScriptCore、SpiderMonkey 和 JScript。
>>> import execjs
>>> execjs.eval("'red yellow blue'.split(' ')")
['red', 'yellow', 'blue']
>>> execjs.get().name
'Node.js (V8)'