Skip to main content

Setuptools plugin for Rust extensions

github actions pypi package readthedocs code style: black

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.

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.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

setuptools-rust-1.0.0.tar.gz (279.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

setuptools_rust-1.0.0-py3-none-any.whl (18.2 kB view details)

Uploaded Python 3

File details

Details for the file setuptools-rust-1.0.0.tar.gz.

File metadata

  • Download URL: setuptools-rust-1.0.0.tar.gz
  • Upload date:
  • Size: 279.0 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

Hashes for setuptools-rust-1.0.0.tar.gz
Algorithm Hash digest
SHA256 eb6e6d41f01e63d042288e5c609684adf93426c10ea745ec324263f3fcbf27e9
MD5 054bed1478d0f47e4276986de4fa9b07
BLAKE2b-256 22faac431f0571bd84d8da5b55d9c9a00d510ae8682324405eabd96a752d090c

See more details on using hashes here.

File details

Details for the file setuptools_rust-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: setuptools_rust-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 18.2 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

Hashes for setuptools_rust-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 dac3ab657ed6331ee39ef9081fe26725d7b0d6979d7cc408640f5863281830a5
MD5 6b9a6c621d7315612c92f45eb7653616
BLAKE2b-256 5cebd042f7a729c2cf4b955d731029f25c71485aaad7b6f2f1458c26fbffb85d

See more details on using hashes here.

Release history Release notifications | RSS feed

1.13.0

2 files

1.12.1

2 files

1.12.0

2 files

1.11.1

2 files

1.11.0

2 files

1.10.2

2 files

1.10.1

2 files

1.10.0

2 files

1.9.0

2 files

1.8.1

2 files

1.8.0

2 files

1.7.0

2 files

1.6.0

2 files

1.5.2

2 files

1.5.1

2 files

1.5.0

2 files

1.4.1

2 files

1.4.0

2 files

1.3.0

2 files

1.2.0

2 files

1.1.2

2 files

1.1.1

2 files

1.1.0

2 files

This release

1.0.0 This release

2 files

0.12.1

2 files

0.12.0

2 files

0.11.6

2 files

0.11.5

2 files

0.11.4

2 files

0.11.3

2 files

0.11.2

2 files

0.11.1

2 files

0.11.0

2 files

0.10.6

1 file

0.10.5

1 file

0.10.4

1 file

0.10.3

2 files

0.10.2

2 files

0.10.1

2 files

0.10.0

2 files

0.9.2

2 files

0.9.1

1 file

0.9.0

1 file

0.8.4

1 file

0.8.3

1 file

0.8.2

1 file

0.8.1

1 file

0.8.0

1 file

0.7.2

1 file

0.7.1

1 file

0.7.0

1 file

0.6.4

1 file

0.6.3

1 file

0.6.2

1 file

0.6.1

1 file

0.6.0

1 file

0.5.1

1 file

0.5.0

1 file

0.4.2

1 file

0.4.1

1 file

0.4

1 file

0.3.1

1 file

0.3

1 file

0.2

1 file

0.1

1 file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page