I am starting to compile my Python 3 project with Cython, and I would like to know if it's possible to reduce my current compile time workflow to a single instruction.
This is my setup.py as of now:
from distutils.core import setup
from distutils.extension import Extension
from Cython.Build import cythonize
extensions = [
Extension("v", ["version.py"]),
Extension("*", ["lib/*.py"])
]
setup(
name = "MyFirst App",
ext_modules = cythonize(extensions),
)
And this is what I run from shell to obtain my executables:
python3 setup.py build_ext --inplace
cython3 --embed -o main.c main.py
gcc -Os -I /usr/include/python3.5m -o main main.c -lpython3.5m -lpthread -lm -lutil -ldl
This whole process works just fine, I'd like to know if there is a way to also embed the last two instruction in the setup.py script.
Thank you
Start off with checking out the docs for the utility you're using. If there are complicated arguments, there is probably a config file.
This should tidy up your first command:
# setup.cfg
[build_ext]
inplace=1
I don't see anything in the docs about a post-build step, and I wouldn't really expect this process to execute shell commands afterwards. build_ext is for building python. make is very available and usual for building C binaries.
Add a Makefile to your project. If you have gccinstalled, you likely have make already:
# Makefile (lines need to start with tab)
compile:
python3 setup.py build_ext --inplace
cython3 --embed -o main.c main.py
gcc -Os -I /usr/include/python3.5m -o main main.c -lpython3.5m -lpthread -lm -lutil -ldl
Now you can just type make or make compile to get the desired affect.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With