Skip to main content

Distribute python modules/packages as binary files (compilation based on Cython)

Project description

setuptools-cythonize

Python 2.7+/3.5+ PyPi package PyPi downloads

The setuptools-cythonize provides distutils classes to compile Python source code into C code using Cython. The generated code is packaged into a platform dependent archive.

cythonization

Install

$> pip install setuptools-cythonize

Setup configuration

Add the cmdclass keyword to the setup:

from setuptools import setup
from setuptools_cythonize import get_cmdclass

setup(
    cmdclass=get_cmdclass(),
    name="my_package",
    version="2.0.5",
    description="My custom library",
    ...
)

Some packages can be excluded from the cythonization by setting the exclude_cythonize option. The module names matching is done using the function fnmatch.fnmatchcase .

from setuptools import setup
from setuptools_cythonize import get_cmdclass

setup(
    cmdclass=get_cmdclass(),
    name="my_package",
    ...
    options={
        'build_py':
            {'exclude_cythonize': ['my_package.subpack*']}
    },
    ...
)

The Cython compiler options can also be customized before running the setup:

from setuptools import setup

from Cython.Compiler import Options

Options.docstrings = False

setup(
    ...
)

To speedup files compilation, the cythonization can be performed in parallel by setting the parallel option. The number of CPUs availbale can be retrived using the multiprocessing module. For instance:

import multiprocessing
from setuptools import setup
from setuptools_cythonize import get_cmdclass

setup(
    cmdclass=get_cmdclass(),
    name="my_package",
    ...
    options={
        'build_ext':
            {'parallel': multiprocessing.cpu_count()}
    },
    ...
)

Packaging

Generate your package by executing the setup.py file, all Python modules (except the ones defined in exclude_cythonize) will be compiled and packaged:

$> python setup.py bdist --cythonize

A source package can still be generated by removing the --cythonize option:

$> python setup.py bdist

Project details


Download files

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

Source Distribution

setuptools-cythonize-1.0.7.tar.gz (5.5 kB view details)

Uploaded Source

Built Distribution

setuptools_cythonize-1.0.7-py2.py3-none-any.whl (5.6 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file setuptools-cythonize-1.0.7.tar.gz.

File metadata

  • Download URL: setuptools-cythonize-1.0.7.tar.gz
  • Upload date:
  • Size: 5.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.5

File hashes

Hashes for setuptools-cythonize-1.0.7.tar.gz
Algorithm Hash digest
SHA256 5a44e3ef90d3be6ae4cdf49c910fc6d70e0a3e29d55b165f5eb8f34ac0e1109f
MD5 d7dce823ac58c4718d7a5e425894f3e5
BLAKE2b-256 5c207100ed9836f2ef507fa45f1e77f0efe02eb0887708ab5df92baa352d545f

See more details on using hashes here.

File details

Details for the file setuptools_cythonize-1.0.7-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for setuptools_cythonize-1.0.7-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 42fbff2ac71213e49faf533ac19b3469c273e7f0c401237129265f52e48491d9
MD5 ea59a2cab8fae7da3e51e7191bececfd
BLAKE2b-256 1d152918fd272c42cb6d753750f5152a038e42ccaafed2b104a357a9a6c57196

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page