pythreejs
Interactive 3D graphics for the Jupyter Notebook and JupyterLab, using Three.js and Jupyter Widgets.
Decision gist · record as of 2026-08-14
Yes, if you need interactive 3D graphics in Jupyter. The package is stable, has low install friction, and integrates cleanly with the notebook ecosystem. Maintenance is dormant but not abandoned; no known vulnerabilities exist. Be aware that setup may require manual steps on older JupyterLab versions, and the last release was in early 2023, so it may lag behind recent Three.js features.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires Jupyter (Notebook Classic or JupyterLab) to be installed and running.
- For JupyterLab < 3, nodejs >= 12 may be needed and manual extension installation may be required.
- Low install friction; ships as a pure Python wheel.
License · maintenance · safety
BSD-3-Clause (permissive) — BSD-3-Clause is permissive and imposes no significant restrictions on use or redistribution. You may use, modify, and distribute this package freely in proprietary or open-source projects.
last release 2023-02-20 (1271 days) · last repo commit 2024-10-10 · 988 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 124,309 downloads/mo, #11,874 on PyPI
Alternatives
Verify before relying
pip install pythreejs
from pythreejs import *
scene = Scene(children=[PerspectiveCamera(position=[0, 0, 10])])
renderer = Renderer(scene=scene, camera=scene.children[0])- Whether the package works with current JupyterLab versions (3+) without additional setup beyond pip install.
- Performance characteristics and typical scene complexity limits for interactive rendering.
- Compatibility with recent versions of Three.js and whether updates are planned.
What it is and what it does
Pythreejs is a Python library that lets you create and display interactive 3D graphics in Jupyter notebooks and JupyterLab by wrapping the Three.js JavaScript library. It works through Jupyter Widgets, so you define 3D scenes, cameras, geometries, and materials in Python and see them rendered as interactive WebGL visualizations in your notebook cells. The package handles the communication between Python and the browser-side Three.js engine, letting you build scenes programmatically and respond to user interactions.
The library is built on top of ipywidgets, ipydatawidgets, numpy, and traitlets, which means it integrates naturally with the Jupyter ecosystem. You define 3D objects using Python classes, compose them into a scene, and display them inline. It's useful for exploratory data visualization, scientific computing, and educational demonstrations where you want interactive 3D graphics without leaving the notebook environment.
Use it for
- Visualize 3D scientific data (point clouds, meshes, volumetric data) interactively in a notebook.
- Build educational demos or tutorials that show 3D geometry, physics simulations, or mathematical concepts.
- Explore molecular structures or other domain-specific 3D models in an interactive notebook environment.
- Create interactive dashboards that embed 3D visualizations alongside analysis code and markdown.
- Prototype 3D graphics applications before porting to a standalone Three.js or WebGL application.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, if you need interactive 3D graphics in Jupyter.
The package is stable, has low install friction, and integrates cleanly with the notebook ecosystem. Maintenance is dormant but not abandoned; no known vulnerabilities exist. Be aware that setup may require manual steps on older JupyterLab versions, and the last release was in early 2023, so it may lag behind recent Three.js features.
Install
pythreejs on PyPI
Before you install
Low install friction; ships as a pure Python wheel. Maintenance is dormant (last release 2023-02-20, last commit 2024-10-10), but the package is marked Production/Stable and has no known vulnerabilities. For JupyterLab 3+, installation is straightforward; earlier versions may require manual extension setup.
Requires Jupyter (Notebook Classic or JupyterLab) to be installed and running. For JupyterLab < 3, nodejs >= 12 may be needed and manual extension installation may be required.
License in practice
BSD-3-Clause is permissive and imposes no significant restrictions on use or redistribution. You may use, modify, and distribute this package freely in proprietary or open-source projects.
Quickstart
pip install pythreejs
from pythreejs import *
scene = Scene(children=[PerspectiveCamera(position=[0, 0, 10])])
renderer = Renderer(scene=scene, camera=scene.children[0])
Verify before relying
- Whether the package works with current JupyterLab versions (3+) without additional setup beyond pip install.
- Performance characteristics and typical scene complexity limits for interactive rendering.
- Compatibility with recent versions of Three.js and whether updates are planned.
Package facts
| License | BSD-3-Clause permissive |
| Python support | Supports the current Python release >=3.7 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 4 packagesipywidgetsipydatawidgetsnumpytraitlets |
| Maintenance | Dormant 1,271 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 124,309 / month, #11,874 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 5 - Production/StableIntended Audience :: DevelopersIntended Audience :: Science/ResearchLicense :: OSI Approved :: BSD LicenseProgramming Language :: JavaScriptProgramming Language :: Python :: 2Programming Language :: Python :: 3Topic :: Multimedia :: Graphics |
Evidence: pythreejs-2.4.2-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “3d graphics jupyter notebook”
- pythreejsPythreejs bridges Python and Three.js to render interactive 3D…
- py3DmolEmbeds an interactive 3D molecular viewer in Jupyter notebooks using…
- bqplotbqplot is a 2-D interactive plotting library for Jupyter notebooks…
Give your agent the search over MCP, or paste the wish link into any chat.
More Graphics packages
Pillow adds image processing capabilities to Python, providing file format support, efficient pixel data handling, and image manipulation operations.
Install it if you need to work with images in Python—it is the de facto standard for this task.
fonttools manipulates font files in multiple formats (TrueType, OpenType, AFM, Type 1, Mac-specific) and includes TTX, a tool to convert fonts to and from XML text format.
Install it if you need to read, write, or manipulate fonts programmatically or via the TTX command-line tool.
Enables matplotlib figures to display inline directly within Jupyter notebooks and IPython environments instead of in separate windows.
PyMuPDF extracts, renders, converts, and manipulates PDF and other document formats (XPS, EPUB, images, Office files via Pro) with high performance, providing text, tables, images, and metadata with precise layout information.
The AGPL license requires careful review if you are building proprietary software—commercial licensing is available from Artifex.
pypdfium2 is a Python binding to PDFium that enables PDF rendering, inspection, manipulation, and creation through a ctypes interface to Google's PDFium library.
Install it if you need PDF rendering, inspection, or manipulation in Python; the medium install friction is offset by comprehensive platform support.
Altair is a declarative Python library for creating interactive statistical visualizations by writing simple, readable code that compiles to Vega-Lite specifications.
See also ipympl · jupyter_bokeh · ipytree · jupyterlab-widgets · py3Dmol · jupyter-dash · ipysigma · ipywidgets · ipyvuetify