https://github.com/pybind/scikit_build_example
An example combining scikit-build and pybind11
https://github.com/pybind/scikit_build_example
Last synced: 8 days ago
JSON representation
An example combining scikit-build and pybind11
- Host: GitHub
- URL: https://github.com/pybind/scikit_build_example
- Owner: pybind
- License: other
- Created: 2020-09-22T18:54:25.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2026-03-30T21:32:06.000Z (14 days ago)
- Last Synced: 2026-04-05T17:44:25.631Z (8 days ago)
- Language: Python
- Size: 182 KB
- Stars: 145
- Watchers: 3
- Forks: 41
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# scikit_build_example
[![Gitter][gitter-badge]][gitter-link]
| CI | status |
|----------------------|--------|
| conda.recipe | [![Conda Actions Status][actions-conda-badge]][actions-conda-link] |
| pip builds | [![Pip Actions Status][actions-pip-badge]][actions-pip-link] |
An example project built with [pybind11][] and [scikit-build-core][]. Python
3.9+ (see older commits for 3.7+, or even older versions of Python using [scikit-build (classic)][]).
[gitter-badge]: https://badges.gitter.im/pybind/Lobby.svg
[gitter-link]: https://gitter.im/pybind/Lobby
[actions-badge]: https://github.com/pybind/scikit_build_example/workflows/Tests/badge.svg
[actions-conda-link]: https://github.com/pybind/scikit_build_example/actions?query=workflow%3AConda
[actions-conda-badge]: https://github.com/pybind/scikit_build_example/workflows/Conda/badge.svg
[actions-pip-link]: https://github.com/pybind/scikit_build_example/actions?query=workflow%3APip
[actions-pip-badge]: https://github.com/pybind/scikit_build_example/workflows/Pip/badge.svg
[actions-wheels-link]: https://github.com/pybind/scikit_build_example/actions?query=workflow%3AWheels
[actions-wheels-badge]: https://github.com/pybind/scikit_build_example/workflows/Wheels/badge.svg
## Installation
- Clone this repository
- `pip install ./scikit_build_example`
## Test call
```python
import scikit_build_example
scikit_build_example.add(1, 2)
```
## Files
This example has several files that are a good idea, but aren't strictly
necessary. The necessary files are:
* `pyproject.toml`: The Python project file
* `CMakeLists.txt`: The CMake configuration file
* `src/main.cpp`: The source file for the C++ build
* `src/scikit_build_example/__init__.py`: The Python portion of the module. The root of the module needs to be ``, `src/`, or `python/` to be auto-discovered.
These files are also expected and highly recommended:
* `.gitignore`: Git's ignore list, also used by `scikit-build-core` to select files for the SDist
* `README.md`: The source for the PyPI description
* `LICENSE`: The license file
There are also several completely optional directories:
* `.github`: configuration for [Dependabot][] and [GitHub Actions][]
* `conda.recipe`: Example recipe. Normally you should submit projects to conda-forge instead of building them yourself, but this is useful for testing the example.
* `docs/`: Documentation
* `tests/`: Tests go here
And some optional files:
* `.pre-commit-config.yaml`: Configuration for the fantastic static-check runner [pre-commit][].
* `noxfile.py`: Configuration for the [nox][] task runner, which helps make setup easier for contributors.
This is a simplified version of the recommendations in the [Scientific-Python
Development Guide][], which is a _highly_ recommended read for anyone
interested in Python package development (Scientific or not). The guide also
has a cookiecutter that includes scikit-build-core and pybind11 as a backend
choice.
### CI Examples
There are examples for CI in `.github/workflows`. A simple way to produces
binary "wheels" for all platforms is illustrated in the "wheels.yml" file,
using [cibuildwheel][].
## License
pybind11 is provided under a BSD-style license that can be found in the LICENSE
file. By using, distributing, or contributing to this project, you agree to the
terms and conditions of this license.
[cibuildwheel]: https://cibuildwheel.readthedocs.io
[scientific-python development guide]: https://learn.scientific-python.org/development
[dependabot]: https://docs.github.com/en/code-security/dependabot
[github actions]: https://docs.github.com/en/actions
[pre-commit]: https://pre-commit.com
[nox]: https://nox.thea.codes
[pybind11]: https://pybind11.readthedocs.io
[scikit-build-core]: https://scikit-build-core.readthedocs.io
[scikit-build (classic)]: https://scikit-build.readthedocs.io