Exejs
Run JavaScript code from Python.「髯祭司」是一个旨在使用python运行javascript的库。
Install / Use
/learn @UlionTse/ExejsREADME
ExeJS
<p align="center"> <a href="https://pypi.org/project/exejs"><img alt="PyPI - Version" src="https://img.shields.io/pypi/v/exejs.svg?color=blue"></a> <a href="https://anaconda.org/conda-forge/exejs"><img alt="Conda - Version" src="https://img.shields.io/conda/vn/conda-forge/exejs.svg?color=blue"></a> <a href="https://pypi.org/project/exejs"><img alt="PyPI - License" src="https://img.shields.io/pypi/l/exejs.svg?color=brightgreen"></a> <a href="https://pypi.org/project/exejs"><img alt="PyPI - Python" src="https://img.shields.io/pypi/pyversions/exejs.svg?color=blue"></a> <a href="https://pypi.org/project/exejs"><img alt="PyPI - Status" src="https://img.shields.io/pypi/status/exejs.svg?color=brightgreen"></a> <a href="https://pypi.org/project/exejs"><img alt="PyPI - Wheel" src="https://img.shields.io/badge/wheel-yes-brightgreen.svg"></a> <a href="https://pypi.org/project/exejs"><img alt="PyPI - Downloads" src="https://static.pepy.tech/personalized-badge/exejs?period=total&units=international_system&left_text=downloads&left_color=grey&right_color=blue"></a> </p>Run JavaScript code from Python.
Supported Runtime
| ID | Runtime | Browser Engine | Team | | --- | -------------- | -------------- | --------- | | 1 | Node | Chrome | Google | | 2 | JavaScriptCore | Safari | Apple | | 3 | SpiderMonkey | Firefox | Mozilla | | 4 | JScript | IE | Microsoft | | 5 | PhantomJS | Webkit* | Apple | | 6 | SlimerJS | Gecko* | Mozilla | | 7 | Nashorn | Java* | Oracle |
Installation
# PYPI
pip install --upgrade exejs
# Conda
conda install conda-forge::exejs
# Source
git clone https://github.com/UlionTse/exejs.git
cd exejs
python setup.py install
Getting Started
import exejs
# evaluate:
print(exejs.evaluate("'red yellow blue'.split(' ')"))
# call:
print(exejs.compile('function add(x, y) { return x+y; }').call('add', 1, 2))
Reference
Why
- We need to run javascript by python, but pyexecjs was EOL in 2018. Issue#1
- Package builds that rely on pyexecjs will fail or be cancelled. Issue#2
- Because pyexecjs will temporarily write compiled files by default, it will cause antivirus software to issue an alarm and block the program from running. Issue#3
Improvement and Change
- Remove the interactive behavior of temporarily writing compiled code locally (except
JScript), and replace it with just-in-time compilation and running. - Remove support for python2.
- Support async.
Excellent Case
ExeJS is currently an important dependency library of Translators.
