{"library":"pyexecjs","title":"PyExecJS","description":"PyExecJS is a Python library (version 1.5.1) designed to run JavaScript code from Python by automatically picking the best available JavaScript runtime. It was developed as a port of Ruby's ExecJS, aiming to simplify JavaScript execution, particularly in environments like Windows XP where Node.js was not readily available. However, the library is officially End-of-Life (EOL) since 2018 and is no longer maintained, with its original purpose largely superseded by modern JavaScript runtime availability.","language":"python","status":"abandoned","last_verified":"Mon May 18","install":{"commands":["pip install PyExecJS"],"cli":null},"imports":["import execjs"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import execjs\nimport os\n\n# Basic evaluation\nresult_eval = execjs.eval(\"'red yellow blue'.split(' ')\")\nprint(f\"Eval result: {result_eval}\")\n\n# Compiling and calling a function\nctx = execjs.compile(\"\"\"\n  function add(x, y) {\n    return x + y;\n  }\n\"\"\")\nresult_call = ctx.call(\"add\", 1, 2)\nprint(f\"Call result: {result_call}\")\n\n# Selecting a specific runtime (requires runtime to be installed, e.g., Node.js)\n# You might need to set the environment variable or ensure Node.js is in PATH\n# os.environ[\"EXECJS_RUNTIME\"] = \"Node\"\n# node_runtime = execjs.get()\n# if node_runtime:\n#   print(f\"Selected runtime: {node_runtime.name}\")\n#   print(f\"Node.js eval result: {node_runtime.eval('1 + 2')}\")\n# else:\n#   print(\"Node.js runtime not found or configured.\")","lang":"python","description":"This quickstart demonstrates the core functionalities of PyExecJS: `execjs.eval()` for simple JavaScript snippets and `execjs.compile()` followed by `ctx.call()` for more complex code with functions. It also shows how to (optionally) attempt to select a specific runtime, though proper runtime installation and environment configuration are external requirements.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-18","installed_version":"1.5.1","pypi_latest":"1.5.1","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":2.5,"avg_import_s":0.05,"wheel_type":"sdist"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"PyExecJS","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.05,"mem_mb":1.7,"disk_size":"19.4M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"PyExecJS","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":2,"import_time_s":0.03,"mem_mb":1.7,"disk_size":"20M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"PyExecJS","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.06,"mem_mb":1.9,"disk_size":"21.8M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"PyExecJS","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":2.1,"import_time_s":0.06,"mem_mb":1.9,"disk_size":"22M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"PyExecJS","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.05,"mem_mb":1.9,"disk_size":"11.7M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"PyExecJS","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":3.2,"import_time_s":0.05,"mem_mb":1.9,"disk_size":"12M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"PyExecJS","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.05,"mem_mb":1.9,"disk_size":"11.5M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"PyExecJS","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":2.7,"import_time_s":0.05,"mem_mb":1.7,"disk_size":"12M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"PyExecJS","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.04,"mem_mb":2,"disk_size":"19.0M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"PyExecJS","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":2.4,"import_time_s":0.05,"mem_mb":2,"disk_size":"19M"}]}}