2020年8月

如果你使用百度搜索“使用 python 运行 js 程序”之类的关键字,得到的结果无非是"pyv8","pyexecjs,","js2py","直接操作node"。
那么很遗憾,以上四种方案都很不ok。

我花费很长时间,查阅了大量资料,总结出一个道理:如果在百度里很长时间都找不到的答案,不妨去 Google 一下,使用英文关键字。

这里介绍的是 PyMiniRacer ,它是一个很棒的库,可以完美替代谷歌的 pyv8 ,让你在任何版本的Python里都能通过 pip 很轻松的安装。

PyMiniRacer 仓库

特点:轻,安装方便,使用v8引擎(快),可以记录上下文环境,项目在积极维护中

安装:pip install py_mini_racer
使用:(更多用法见github)

from py_mini_racer import py_mini_racer
ctx = py_mini_racer.MiniRacer()
ctx.eval("""
function escramble_758(){
    var a,b,c
    a='+1 '
    b='84-'
    a+='425-'
    b+='7450'
    c='9'
    return a+c+b;
}
""")
ctx.call("escramble_758")

分别介绍一下其他库的缺点:

pyv8

2013 年开始就不维护了,支持python2 和早期python3 ,对python版本有要求,安装难,安装了不一定能用。

pyexecjs

这个也不维护了,作者的话:“pyexecjs性能差,推荐大家去用性能更好的pyv8”
pyexecjs 本身依赖js运行环境.首先在python中调用pyexecjs,然后pyexecjs再去启动nodejs。性能差

js2py

这个库的核心是“将js 代码翻译成 py”,自然会缺失很多js的系统函数,最后出现很多奇怪的bug

dukpy

这个库是基于 duktape 引擎的,不支持 es6。可能会出现很多奇怪的bug


最后,可以在 https://stackoverflow.com/questions/10136319/executing-javascript-from-python 发现更多的 “在 python 中运行js”的答案

每次都百度,不如总结一起。方便复制粘贴

1. python 豆瓣源

 -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple

2. ubuntu 20 源

deb https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse

3. selenium

chrome 下载

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome*.deb
google-chrome --version

chromedriver下载路径:
http://npm.taobao.org/mirrors/chromedriver/

4. composer 阿里云镜像

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

5. npm

5.1. cnpm(淘宝)

npm install -g cnpm --registry=https://registry.npm.taobao.org

5.2. 配置国内源

npm config set registry https://registry.npm.taobao.org

5.3. yarn

yarn config set registry https://registry.npm.taobao.org/

6. github

6.1 访问加速 (git clone xxx)

将github.com 的域名替换为 https://github.com.cnpmjs.org 即可,后面的路径不要更改。
或者用 https://gitclone.com/

6.2 下载加速 (releases)

https://gh.msx.workers.dev/
将下载链接填进去即可,复制加速后的链接,也可以在服务器上用wget 下载。