首先,你使用的是图书馆,
PyExecJS
它声称不再需要维护,而且设计也很差。
所以,这可能不是最好的选择。
第二,你用错了。
这些示例都包括将JS代码作为字符串传递给
execjs.eval
或
execjs.compile
.
您试图直接在内联中包含JS代码,就好像它是Python代码一样。这不会奏效;它将尝试将JS代码解析为python并引发
SyntaxError
因为他们不是同一种语言。
一
所以,你必须做与例子相同的事情。可能看起来像这样:
import execjs
jscode = """
var request = require('request');
var apiHostName='https:/url.com';
emailAddress = 'my.email@company.com'
apiKey = 'api_key'
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log("Identity with email address " + emailAddress + " found:");
var b= JSON.parse(body);
console.log("id="+b.identityId+",api key="+b.apiKey+",type="+b.type);
} else{
if (response.statusCode == 401) {
console.log ("Couldn't recognize api key="+apiKey);
} else if (response.statusCode == 403) {
console.log ("Operation forbidden for api key="+apiKey);
} else if (response.statusCode == 404) {
console.log ("Email address " +emailAddress + " not found");
}
}
}
"""
execjs.eval(jscode)
或者,也许更好,将javascript移动到单独的
.js
文件,然后按如下方式运行:
import os.path
import execjs
dir = os.path.dirname(__file__)
with open(os.path.join(dir, 'myscript.js')) as f:
jscode = f.read()
execjs.eval(jscode)
1。某人
能够
为python编写一个导入钩子,该钩子执行类似于perl的操作
Inline::Python
,
Inline::Java
对于python,允许您将其他语言的代码直接嵌入到python脚本中。有时,有人确实试图写这样的东西,但他们似乎总是在它还没有准备好生产之前就把它当作一个坏主意放弃,或者重新设计它使之更像
派克塞克斯
.