A command-line tool that builds installers for a set of conda packages, producing shell, macOS .pkg, and Windows .exe/.msi installers.
AnswerDotAI/nbdev
A notebook-driven development platform that turns Jupyter Notebooks into Python packages with docs, tests, CI and PyPI/conda releases.
- Stars
- 5,323
- Forks
- 513
- Open issues
- 187
- Last commit
- 2 days ago
What is it?
nbdev lets you write Python code, tests and documentation in Jupyter Notebooks using lightweight markup. From those notebooks it exports Python modules, generates a documentation website with Quarto and GitHub Pages, runs tests in parallel, and sets up GitHub Actions for continuous integration.
The project keeps notebooks and plaintext source code in two-way sync, so you can edit in an IDE and push changes back to the notebook cells they came from. Git hooks strip unneeded notebook metadata and render merge conflicts in a readable form. Packaging tools handle releases to PyPI and conda.
nbdev3 moved project configuration from settings.ini to pyproject.toml, and includes the nbdev-migrate-config command to convert existing nbdev2 projects.
Key features
- 01Exports notebooks to Python modules with two-way sync to source code
- 02Generates searchable documentation sites with Quarto and GitHub Pages
- 03Runs notebook-based tests in parallel with one command
- 04Provides GitHub Actions workflows for CI and doc rebuilds
- 05Publishes packages to PyPI and conda
- 06Includes Git hooks that clean notebooks and resolve merge conflicts
Use cases
- Building a Python library where code, tests and docs live together in notebooks
- Publishing an open-source Python package to PyPI with automated releases
- Keeping project documentation generated and hyperlinked from source code
- Editing notebook-based code in an IDE while keeping notebooks in sync
Quick start
- 1
Install nbdev with pip
pip install nbdev - 2
Run nbdev-help to see the available commands
nbdev-help
Things to know
- Requires WSL on Windows; it does not run under cmd or PowerShell.
- Must be installed into the same Python environment used for Jupyter and your project.
- The January 2026 nbdev3 release moved configuration to pyproject.toml, a breaking change for nbdev2 projects.
In collections
Topics
FAQ
- What is nbdev?
- A notebook-driven development platform that turns Jupyter Notebooks into Python packages with docs, tests, CI and PyPI/conda releases. nbdev lets you write Python code, tests and documentation in Jupyter Notebooks using lightweight markup. From those notebooks it exports Python modules, generates a documentation website with Quarto and GitHub Pages, runs tests in parallel, and sets up GitHub Actions for continuous integration.
- Is nbdev free to use? What license does it have?
- nbdev is open source under the Apache-2.0 license. Check the license terms before using it in commercial products.
- Is nbdev still maintained?
- Actively maintained. The last commit to nbdev was on Nov 5, 2026.
- What can I use nbdev for?
- Building a Python library where code, tests and docs live together in notebooks Publishing an open-source Python package to PyPI with automated releases Keeping project documentation generated and hyperlinked from source code Editing notebook-based code in an IDE while keeping notebooks in sync
- How do I install nbdev?
- Install nbdev with pip: pip install nbdev Run nbdev-help to see the available commands: nbdev-help
- Where can I get nbdev?
- The source code and installation instructions are on GitHub: https://github.com/AnswerDotAI/nbdev
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
Open-source tool that generates a responsive, three-panel API reference site from OpenAPI, Swagger, AsyncAPI, or GraphQL definitions.
Modern, extensible Python project manager covering builds, environments, testing, linting, versioning and publishing.
A build automation tool for Python projects that uses dependency-based tasks and a plugin system to define build life cycles.
A web-based API documentation browser that combines many developer reference docs into one searchable, offline-capable interface.
A release automation tool for Go projects that builds, packages, and publishes binaries to GitHub, package managers, and container registries.