问题标签 [language-binding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
428 浏览

javascript - 使用 Python 调用网页上的 JavaScript 函数

我创建了一个网页,其中包含一个名为foo(z). 为了这个问题,我们假设所有的foo(z)都是 call console.log(z)

是否可以运行可以触发foo(z)网页上存在的 JavaScript 函数的 Python 脚本?

换句话说,我在浏览器中加载了包含foo(z). 然后我在我的本地机器上执行 Python 脚本,它进入浏览器并调用 JavaScriptfoo(z)函数,因此您会看到z浏览器控制台的输出(因为所有foo(z)的都是调用console.log(z))。

似乎有很多关于使用 Python 执行 JavaScript 的信息,但我认为这些资源中没有任何一个涉及执行网页内的 JavaScript 函数。

编辑:我在人类可以玩的网页上构建了一个游戏。现在我想创建一个 Python 机器人,它可以调用网页上的 JavaScript 函数,以便它也可以玩游戏。

0 投票
0 回答
72 浏览

python - 从 Python 包中加载本机库时的路径问题

我参与的一个项目是使用名为UniFFI的 Rust 语言绑定库从 Rust 代码创建 Python 语言绑定。crate 生成一个本地库(比如libtinymath.dylib)和一个 Python 模块(比如tinymath.py导入和使用本地库。

python 包布局如下所示:

我的setup.py构建文件确保在 buildtools 创建库时将库复制到包中:

问题是使用 pip 安装库后,导入语句失败,说明 Python 在默认路径中找不到本机库。这是有道理的,因为该库确实不在 Python 使用的路径中(我可以从返回的错误中看到)。我通过搜索这个问题的答案了解到,实际上 Python 搜索路径对于普通 Python 模块(使用PYTHONPATH)与原生库不同。这就是给我带来麻烦的原因。如果我愿意,我可以更改 Python 查找模块的位置,但我似乎无法调整 Python 查找本机库的位置。

核心问题

因此,我着手更改包用于在 Linux 和 macOS 上搜索本机库的路径;我所需要的只是确保它看起来“在其自身内部”(本机库确实位于模块旁边)。我不确定这是否应该在setup.py文件中或通过其他方法指定。这是我在这里要问的核心问题:当它寻找本机库时,如何告诉包在当前目录中查找?

替代方法

可以用来完成这项工作的另一种途径是准确声明模块中找到库的位置(tinymath.py在上面的示例中)。但我宁愿不使用这种方法,主要是因为这意味着进入并使用 UniFFI 提供的自动生成的语言绑定模块(他们建议不要触摸)。但是,它确实有效,验证了问题仅在于搜索路径并且其他一切正常的想法。

使用这种方法,我当前的修复是从其自动生成的版本更改库加载功能:

到修改后的版本: