stpyv8
Python Wrapper for Google V8 Engine
What it is and what it does
STPyV8 is a Python C++ extension that wraps Google's V8 JavaScript engine, enabling bidirectional interoperability between Python and JavaScript in a single process. You can evaluate JavaScript code and call JavaScript functions from Python, or export Python classes and objects to be used from within V8 contexts. The package is a maintained fork of the original PyV8 project, updated to work with modern V8 versions and Python 3.
The library ships as precompiled wheels for Linux, macOS, and Windows across Python versions 3.9 through 3.14, with a single runtime dependency on importlib_resources. It is designed for scenarios where you need to execute JavaScript logic alongside Python code without spawning a separate process or network call.
Use it for:
- Embed JavaScript logic (e.g., data transformations, validation rules) directly into a Python application without external process overhead.
- Call Python functions and classes from JavaScript code running in V8, bridging domain logic written in both languages.
- Prototype or test JavaScript code in a Python environment before deploying it to a browser or Node.js runtime.
- Migrate JavaScript-heavy workflows into Python by wrapping V8 execution within Python control flow.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
STPyV8 embeds Google V8 JavaScript engine into Python, allowing you to run JavaScript code from Python and call Python code from JavaScript within the same process.
Yes, if you need Python–JavaScript interoperability in a single process and can accept that the repository is archived. The package is stable, has no known vulnerabilities, and works across major platforms and recent Python versions. However, do not rely on it for active maintenance or security patches; use it only in contexts where you control the JavaScript code being executed or can audit it thoroughly.
Install
stpyv8 on PyPI
pip
pip install stpyv8uv
uv add stpyv8poetry
poetry add stpyv8Installing stpyv8
Before you install
Medium install friction due to compiled C++ extension and platform-specific wheels. Repository is archived and marked abandoned as of the fact sheet date, though the package remains functional and receives occasional updates; no active maintenance should be expected.
License in practice
Apache License 2.0 is permissive, allowing commercial and private use with minimal restrictions; you must retain license notices in distributions.
Quickstart
import STPyV8
with STPyV8.JSContext() as ctxt:
upcase = ctxt.eval("(s) => s.toUpperCase()")
print(upcase("hello"))
Requires precompiled wheels for your platform and Python version (3.9–3.14 supported); building from source requires C++ compiler, Python headers, and Boost libraries.
Verify before relying
- Whether the archived repository will receive security patches or bug fixes going forward.
- Performance characteristics and memory overhead when embedding large or long-running V8 contexts.
- Compatibility guarantees with future Python or V8 engine versions.
Package facts
| License | Apache License 2.0 (permissive) |
| Python support | not specified |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | 1 — importlib_resources |
| Maintenance | abandoned — 582 days since the last release |
| Last repo commit | (repository archived) |
| First released | |
| Downloads | 2,109,637/month — #3,288 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: stpyv8-13.1.201.22-cp310-cp310-macosx_13_0_x86_64.whl; stpyv8-13.1.201.22-cp310-cp310-macosx_14_0_arm64.whl; stpyv8-13.1.201.22-cp310-cp310-manylinux_2_31_x86_64.whl; stpyv8-13.1.201.22-cp310-cp310-win_amd64.whl; stpyv8-13.1.201.22-cp311-cp311-macosx_13_0_x86_64.whl; stpyv8-13.1.201.22-cp311-cp311-macosx_14_0_arm64.whl; stpyv8-13.1.201.22-cp311-cp311-manylinux_2_31_x86_64.whl; stpyv8-13.1.201.22-cp311-cp311-win_amd64.whl; stpyv8-13.1.201.22-cp312-cp312-macosx_13_0_x86_64.whl; stpyv8-13.1.201.22-cp312-cp312-macosx_14_0_arm64.whl; stpyv8-13.1.201.22-cp312-cp312-manylinux_2_31_x86_64.whl; stpyv8-13.1.201.22-cp312-cp312-win_amd64.whl; stpyv8-13.1.201.22-cp313-cp313-macosx_13_0_x86_64.whl; stpyv8-13.1.201.22-cp313-cp313-macosx_14_0_arm64.whl; stpyv8-13.1.201.22-cp313-cp313-manylinux_2_31_x86_64.whl; stpyv8-13.1.201.22-cp313-cp313-win_amd64.whl; stpyv8-13.1.201.22-cp314-cp314-macosx_13_0_x86_64.whl; stpyv8-13.1.201.22-cp314-cp314-macosx_14_0_arm64.whl; stpyv8-13.1.201.22-cp314-cp314-manylinux_2_35_x86_64.whl; stpyv8-13.1.201.22-cp39-cp39-macosx_13_0_x86_64.whl
Tags
More Software Development packages
Provides backported and experimental type hints…
permissive · top 100 on PyPI
numpyNumPy provides an N-dimensional array object…
permissive · top 100 on PyPI
fastapiFastAPI is a Python web framework for building…
permissive · top 100 on PyPI
annotated-docProvides a way to document function parameters,…
permissive · top 100 on PyPI
typerTyper builds command-line applications from…
permissive · top 1,000 on PyPI
distlibDistlib provides low-level packaging utilities…
permissive · top 1,000 on PyPI
denoPackages and distributes Deno (a…
permissive · top 15,000 on PyPI
py-mini-racerEmbeds a modern V8 JavaScript engine in Python,…
permissive · top 5,000 on PyPI
mini-racerEmbeds Google's V8 JavaScript engine in Python,…
permissive · top 5,000 on PyPI
quickjsWraps the QuickJS C library to execute…
unclear · top 5,000 on PyPI
static-ffmpegInstalls ffmpeg v8 and ffprobe binaries for…
permissive · top 15,000 on PyPI
dotnetcore2Bundles the .NET Core 3.1 runtime as a Python…
permissive · top 15,000 on PyPI
Js2PyJs2Py translates and executes JavaScript code…
permissive · top 5,000 on PyPI
streamlit-javascriptExecutes arbitrary JavaScript code from within…
permissive · top 15,000 on PyPI
Js2Py-3.13Js2Py translates and executes JavaScript code…
permissive · top 15,000 on PyPI