Setuptools Rust extension plugin
Project description
Setuptools plugin for Rust extensions
setuptools-rust
is a plugin for setuptools
to build Rust Python extensions implemented with PyO3 or rust-cpython.
Compile and distribute Python extensions written in Rust as easily as if they were written in C.
Setup
For a complete example, see html-py-ever.
First, you need to create a bunch of files:
setup.py
from setuptools import setup
from setuptools_rust import Binding, RustExtension
setup(
name="hello-rust",
version="1.0",
rust_extensions=[RustExtension("hello_rust.hello_rust", binding=Binding.PyO3)],
packages=["hello_rust"],
# rust extensions are not zip safe, just like C-extensions.
zip_safe=False,
)
For a complete reference of the options supported by the RustExtension
class, see the
API reference.
pyproject.toml
[build-system]
requires = ["setuptools", "wheel", "setuptools-rust"]
MANIFEST.in
This file is required for building source distributions
include Cargo.toml
recursive-include src *
Usage
You can use same commands as for c-extensions. For example:
>>> python ./setup.py develop
running develop
running egg_info
writing hello-rust.egg-info/PKG-INFO
writing top-level names to hello_rust.egg-info/top_level.txt
writing dependency_links to hello_rust.egg-info/dependency_links.txt
reading manifest file 'hello_rust.egg-info/SOURCES.txt'
writing manifest file 'hello_rust.egg-info/SOURCES.txt'
running build_ext
running build_rust
cargo build --manifest-path extensions/Cargo.toml --features python3
Finished debug [unoptimized + debuginfo] target(s) in 0.0 secs
Creating /.../lib/python3.6/site-packages/hello_rust.egg-link (link to .)
Installed hello_rust
Processing dependencies for hello_rust==1.0
Finished processing dependencies for hello_rust==1.0
Or you can use commands like bdist_wheel
(after installing wheel
). See also the notes in the documentation about building wheels.
Cross-compiling is also supported, using either crossenv
or cross
. For examples see the test-cross-compile
and test-cross
Github actions jobs in ci.yml
.
By default, develop
will create a debug build, while install
will create a release build.
Commands
build
- Standard build command will also build all rust extensions.build_rust
- Command builds all rust extensions.clean
- Standard clean command executes cargo clean for all rust extensions.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file setuptools-rust-1.1.1.tar.gz
.
File metadata
- Download URL: setuptools-rust-1.1.1.tar.gz
- Upload date:
- Size: 284.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.8.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | dc04afb52a70e56f5d6800a7ed9c45ad5937ba95e51a042b9096459edc038ad6 |
|
MD5 | 6b188ca3de2306577948e6354061328a |
|
BLAKE2b-256 | 3b1739804596680094ddabf2f44814c8919edb14da4f5db7b45e38915133f7fb |
File details
Details for the file setuptools_rust-1.1.1-py3-none-any.whl
.
File metadata
- Download URL: setuptools_rust-1.1.1-py3-none-any.whl
- Upload date:
- Size: 20.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.8.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ad88147697dffabb73f844e2869637c73428c698c49ef7e95cf44c081c71505a |
|
MD5 | ffc2aa0632991bf944b8505635e59eb4 |
|
BLAKE2b-256 | cf6e201ada6b7caa3269fc0d9b2de519885e7fde7ad773d6cc16a4e3a39b9e94 |