Distribute python modules/packages as binary files (compilation based on Cython)
Project description
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.
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
Built Distribution
Hashes for setuptools-cythonize-1.0.7.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5a44e3ef90d3be6ae4cdf49c910fc6d70e0a3e29d55b165f5eb8f34ac0e1109f |
|
MD5 | d7dce823ac58c4718d7a5e425894f3e5 |
|
BLAKE2b-256 | 5c207100ed9836f2ef507fa45f1e77f0efe02eb0887708ab5df92baa352d545f |
Hashes for setuptools_cythonize-1.0.7-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 42fbff2ac71213e49faf533ac19b3469c273e7f0c401237129265f52e48491d9 |
|
MD5 | ea59a2cab8fae7da3e51e7191bececfd |
|
BLAKE2b-256 | 1d152918fd272c42cb6d753750f5152a038e42ccaafed2b104a357a9a6c57196 |