easycython icon indicating copy to clipboard operation
easycython copied to clipboard

An easy way to convert a .pyx file into a .pyd file and avoid having to write a setup.py

========== easycython

Because writing a setup.py each time is painful.

Status

Linux


=====  =====  =====  =====  =====
 x64    2.7    3.4    3.5    3.6
=====  =====  =====  =====  =====

.. image:: https://travis-ci.org/cjrh/easycython.svg?branch=master
   :target: https://travis-ci.org/cjrh/easycython

.. image:: https://coveralls.io/repos/cjrh/easycython/badge.png
   :target: https://coveralls.io/r/cjrh/easycython

Windows

===== ===== ===== ===== ===== x86 2.7 3.4 3.5 3.6 x64 2.7 3.4 3.5 3.6 ===== ===== ===== ===== =====

.. image:: https://ci.appveyor.com/api/projects/status/23heqrp96f6ftmsr :target: https://ci.appveyor.com/project/cjrh/easycython

Introduction

:code:easycython.py is a script that will attempt to automatically convert one or more :code:.pyx files into the corresponding compiled :code:.pyd|.so binary modules files. Example::

$ python easycython.py myext.pyx

:code:pip install easycython will automatically create an executable script in your :code:Scripts/ folder, so you should be able to simply::

$ easycython myext.pyx

or even::

$ easycython *.pyx

You can type::

$ easycython -h

to obtain the following CLI::

usage: easycython.py [-h] [--annotation] [--no-annotation] [--numpy-includes]
                     [--no-numpy-includes]
                     [filenames [filenames ...]]

positional arguments:
  filenames

optional arguments:
  -h, --help           show this help message and exit
  --annotation
  --no-annotation      (default: True)
  --numpy-includes
  --no-numpy-includes  (default: True)
  • :code:--annotation (default) will emit the HTML Cython annotation file.
  • :code:--numpy-includes (default) will add the numpy headers to the build command.
  • Compiler flags :code:-O2 -march=native are automatically passed to the compiler. I have not yet had to step through the generated C code with a debugger.