Getting started with cython on mac os

c++, cython, macos, python, xcode

Solution

You have to tell the `gcc` compiler where is the `pyconfig.h` file on your system using the `-I` flag. You can find it using the `find` program.

A simpler way to compile the module is using a `setup.py` module. Cython provides a `cythonize` function that starts this process for a `.pyx` module.

Another point you are missing is that Cython files usually define helper functions to be used from a main Python module.

Suppose you have the following setup as for dirs and files:

cython-start/
├── main.py
├── setup.py
└── split_urls.pyx

The contents of the `setup.py` are

from distutils.core import setup
from Cython.Build import cythonize

setup(name="My first Cython app",
      ext_modules=cythonize('split_urls.pyx'),  # accepts a glob pattern
      )

The contents of the `split_urls.pyx` file are

import re

def do_split(links):
    return re.findall('(https?://\S+)', links)

And it is the `main.py` module which uses the defined Cython function:

import split_urls

URLS = 'http://google.pl http://youtube.com'
print split_urls.do_split(URLS)

Compile the Cython module by issuing:

$ python setup.py build_ext --inplace
Cythonizing split_urls.pyx
running build_ext
building 'split_urls' extension
creating build
creating build/temp.macosx-10.9-x86_64-2.7
... compiler output ...

And check that your main module is doing what it is supposed to do:

$ python main.py
['http://google.pl', 'http://youtube.com']

Problem

I wrote a simple program in python: ``` // main.py import re links = re.findall('(https?://\S+)', 'http://google.pl http://youtube.com') print(links) ``` Then I execute this: ``` cython main.py ``` It was generated a file: main.c And then I tried this: ``` gcc main.c ``` And I have an error: ``` main.c:8:10: fatal error: 'pyconfig.h' file not found #include "pyconfig.h" ^ 1 error generated. ``` How to compile python to c ? How to get started with cython with xcode on mac ?

Original source