How to Run Javascript from Python?

In Python, we can run Javascript using the PyExecJS library or the js2py library. The PyExecJS library provides a consistent API for running JavaScript code from within Python using a variety of JavaScript engines, including Node.js, JavaScriptCore, and Google's V8 engine. The js2py library allows you to execute JavaScript code from within Python by parsing the JavaScript code and interpreting it in Python. This article will teach us how to run JavaScript from Python using these libraries.

Method 1: Using PyExecJS Library

PyExecJS provides a simple interface for executing JavaScript code. It allows developers to seamlessly integrate JavaScript functionality within their Python applications by leveraging various JavaScript engines.

Installing PyExecJS

Before using PyExecJS, install it using pip:

pip install PyExecJS

Example: Running JavaScript with PyExecJS

Here's how to execute JavaScript code and get results in Python:

import execjs

# Define JavaScript code
js_code = """
function addNumbers(a, b) {
    return a + b;
}

function multiplyNumbers(x, y) {
    return x * y;
}

var result = addNumbers(2, 3);
var product = multiplyNumbers(4, 5);
"""

# Compile and execute JavaScript code
ctx = execjs.compile(js_code)

# Get results from JavaScript variables
addition_result = ctx.eval('result')
multiplication_result = ctx.eval('product')

print("Addition result:", addition_result)
print("Multiplication result:", multiplication_result)

# Call JavaScript function directly
direct_result = ctx.call('addNumbers', 10, 15)
print("Direct function call:", direct_result)

Output

Addition result: 5
Multiplication result: 20
Direct function call: 25

Method 2: Using js2py Library

The js2py library is written entirely in Python and doesn't require external JavaScript engines. It parses JavaScript code and interprets it within Python.

Installing js2py

pip install js2py

Example: Running JavaScript with js2py

import js2py

# Define JavaScript code
js_code = """
function calculateArea(length, width) {
    return length * width;
}

function greetUser(name) {
    return "Hello, " + name + "!";
}

var area = calculateArea(5, 3);
var greeting = greetUser("Python Developer");
"""

# Execute JavaScript code
context = js2py.EvalJs()
context.execute(js_code)

# Access results
print("Area:", context.area)
print("Greeting:", context.greeting)

# Call functions directly
direct_area = context.calculateArea(8, 6)
print("Direct calculation:", direct_area)

Output

Area: 15
Greeting: Hello, Python Developer!
Direct calculation: 48

Comparison of Methods

Feature PyExecJS js2py
External Dependencies Requires JS engine Pure Python
Performance Faster (native JS engines) Slower (Python interpretation)
Installation May need JS runtime Simple pip install
Compatibility Better JS compatibility Limited JS features

Common Use Cases

  • Web Scraping ? Execute JavaScript that dynamically updates webpage content for better data extraction.

  • API Integration ? Use JavaScript libraries or SDKs that don't have Python equivalents.

  • Algorithm Testing ? Test JavaScript algorithms or convert them to Python implementations.

  • Template Processing ? Execute JavaScript-based template engines from Python applications.

  • Cross-platform Development ? Share business logic between Python backend and JavaScript frontend.

Conclusion

Both PyExecJS and js2py enable running JavaScript from Python. PyExecJS offers better performance and compatibility but requires JavaScript engines, while js2py provides a pure Python solution with easier installation. Choose based on your specific requirements for performance, dependencies, and JavaScript feature support.

Updated on: 2026-03-15T23:19:01+05:30

10K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements