--- id: pyexecjs version: "1.5.1" license: MIT License license_treatment: permissive maintenance: abandoned --- # PyExecJS — Run JavaScript code from Python License: permissive · Maintenance: abandoned · Downloads: 311.1K/mo ## What it is and what it does PyExecJS is a Python wrapper that lets you run JavaScript code and call JavaScript functions from Python by automatically detecting and using whatever JavaScript runtime is available on your system. It abstracts away the details of which engine is present—Node.js, PhantomJS, Nashorn, or others—so you can write once and have it work across different environments. You compile JavaScript code into a context object, then call functions on that context and get back Python values. The package is end-of-life and no longer maintained. The repository is archived, the last release was in January 2018, and the author explicitly states that bugs will not be fixed. It requires you to have a JavaScript runtime already installed separately; PyExecJS itself has no runtime dependencies but acts as a bridge to external engines. Performance is a known limitation because it communicates with the runtime via text serialization. Use it for: - Integrate JavaScript libraries or algorithms into a Python application without rewriting them in Python. - Test JavaScript code or functions as part of a Python test suite. - Evaluate or transform JavaScript expressions dynamically at runtime from within a Python program. - Build tools that need to run JavaScript in environments where a separate process invocation is inconvenient. ## Worth the install? AI-flagged interpretation of the facts above — verify before relying. Executes JavaScript code from Python by automatically selecting and delegating to an available JavaScript runtime such as Node.js, PhantomJS, or Nashorn. No. The package is abandoned and explicitly marked end-of-life by its author. While it has no known security vulnerabilities, it receives no maintenance, no bug fixes, and no compatibility updates. Unless you are maintaining legacy code that already depends on it, you should use an actively maintained alternative or invoke a JavaScript runtime directly. The high install friction combined with zero maintenance makes it unsuitable for new projects. ## Install pip install pyexecjs uv add pyexecjs poetry add pyexecjs ## Installing PyExecJS Before you install: High install friction: the package is abandoned (last release January 2018, repository archived as of April 2020). No runtime dependencies are bundled; you must have a compatible JavaScript engine already installed on your system. Maintenance has ceased entirely. License in practice: MIT License (permissive). You may use, modify, and distribute this package freely with minimal restrictions, but the lack of active maintenance means security patches and compatibility fixes will not be forthcoming. Quickstart: pip install PyExecJS import execjs ctx = execjs.compile("function add(x, y) { return x + y; }") result = ctx.call("add", 1, 2) A JavaScript runtime (Node.js, PhantomJS, Nashorn, or equivalent) must be installed and available on your system; PyExecJS does not provide one. Verify before relying: - Whether the package still works reliably with modern Python versions beyond 3.5. - Compatibility with contemporary JavaScript runtimes and their recent major versions. - Whether critical bugs discovered since 2018 affect your intended use case. ## Package facts - License: MIT License (permissive) - Python support: unspecified - Install friction: high - Maintenance: abandoned - Downloads: 311.1K/month (top 15,000 on PyPI) - Known vulnerabilities: none known ## Tags run javascript from python, execute js code python, javascript runtime wrapper, python js bridge, call javascript functions python, embed javascript python, eol, javascript-interop [View on SkillFed](https://skillfed.io/packages/pyexecjs) · [View on PyPI](https://pypi.org/project/pyexecjs/)