pybullet
Official Python Interface for the Bullet Physics SDK specialized for Robotics Simulation and Reinforcement Learning
What it is and what it does
PyBullet is a Python interface to the Bullet Physics Engine, designed primarily for robotics simulation and reinforcement learning. It lets you load articulated bodies (robots, objects) from standard formats like URDF and SDF, then simulate their physics—forward and inverse dynamics, kinematics, collision detection, and ray casting. The package handles the heavy computation in compiled C++ while exposing a straightforward Python API for defining scenes, stepping the simulation, and querying results.
The library supports both interactive visualization with OpenGL and headless simulation for training loops. It has no runtime Python dependencies, making it relatively self-contained once installed, though the compiled wheels are platform-specific. The aging maintenance status and 561-day gap since the last release suggest the core functionality is stable but not under active development.
Use it for:
- Training reinforcement learning agents in simulated robotic environments with realistic physics and collision.
- Validating robot kinematics and dynamics offline before deploying to hardware.
- Prototyping game physics or interactive simulations that require accurate rigid-body dynamics.
- Batch physics-based data generation for computer vision or control research without real-time rendering.
- Educational demonstrations of robotics concepts, inverse kinematics, and collision detection.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
PyBullet provides physics simulation, robotics modeling, and collision detection through Python bindings to the Bullet Physics SDK, supporting URDF/SDF file loading, kinematics, dynamics, and rendering.
Yes, if you need physics simulation for robotics or reinforcement learning. PyBullet is mature, permissively licensed, has no runtime dependencies, and offers broad platform support via wheels. The aging maintenance status is not a blocker for stable simulation tasks, but verify that the specific features you need match the current state of the codebase.
Install
pybullet on PyPI
pip
pip install pybulletuv
uv add pybulletpoetry
poetry add pybulletInstalling pybullet
Before you install
Medium install friction due to compiled C++ bindings, but wheels are available for multiple Python versions and PyPy variants on Linux. Last commit was 2025-10-22 and the package is classified as Production/Stable, though marked as aging with no release in 561 days.
License in practice
Licensed under zlib (permissive), allowing commercial and private use with minimal restrictions—typical for physics simulation libraries.
Quickstart
import pybullet as p
p.connect(p.GUI)
p.loadURDF('r2d2.urdf')
p.stepSimulation()
Requires a display server for GUI mode; headless simulation available but rendering capabilities depend on system OpenGL support.
Verify before relying
- Whether wheel availability extends to ARM64 or other non-x86_64 architectures beyond the manylinux_2_17_x86_64 wheels shown.
- Current state of OpenGL visualization support and CPU renderer capabilities.
- Whether virtual reality headset support is actively maintained or legacy functionality.
Package facts
| License | zlib (permissive) |
| Python support | not specified |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | none |
| Maintenance | aging — 561 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 443,947/month — #6,626 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: pybullet-3.2.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; pybullet-3.2.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; pybullet-3.2.7-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; pybullet-3.2.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; pybullet-3.2.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; pybullet-3.2.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; pybullet-3.2.7-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; pybullet-3.2.7-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; pybullet-3.2.7-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Keywords: game development, virtual reality, physics simulation, robotics, collision detection, opengl
Tags
More Artificial Intelligence packages
LiteLLM provides a unified Python interface to…
permissive · top 100 on PyPI
huggingface-hubClient library and CLI tool for downloading,…
permissive · top 100 on PyPI
langchainLangChain provides a framework for building…
permissive · top 1,000 on PyPI
hf-xethf-xet provides chunk-based deduplication and…
permissive · top 1,000 on PyPI
tokenizersTokenizers converts raw text into token…
permissive · top 1,000 on PyPI
transformersTransformers provides a unified framework for…
permissive · top 1,000 on PyPI
libpinocchiolibpinocchio provides efficient rigid body…
permissive · top 15,000 on PyPI
robot_descriptionsDownloads and caches open-source robot…
permissive · top 15,000 on PyPI
pymunkPymunk is a 2D rigid body physics simulation…
permissive · top 15,000 on PyPI
pinPython interface to a C++ rigid-body dynamics…
permissive · top 5,000 on PyPI
yourdfpyLoads, manipulates, validates, and visualizes…
permissive · top 5,000 on PyPI
sapienSAPIEN is a physics-rich simulation environment…
permissive · top 15,000 on PyPI
Box2DBox2D is a Python binding to the Box2D C++…
permissive · top 15,000 on PyPI
newtonNewton is a GPU-accelerated physics simulation…
permissive · top 15,000 on PyPI
mujocoMuJoCo is a physics simulation engine with…
permissive · top 5,000 on PyPI
panda3d-gltfAdds glTF 2.0 file loading to Panda3D,…
permissive · top 15,000 on PyPI