I trying to compile on windows a Cython file (.pyx), a file which I just saved from .py. Here is my project dir path.
c:\..\Project\App\Analyzer\
_init_.py
Few_other_files.py
consolidated_loop_C.pyx
cl_setup.py
Here is my cl_setup.py
from Cython.Build import cythonize
try:
from setuptools import setup
from setuptools import Extension
except ImportError:
from distutils.core import setup
from distutils.extension import Extension
setup(
name = "Consolidated Loop",
ext_modules = cythonize("consolidated_loop_C.pyx")
)
I am using below statement for compling in the same folder.
python cl_setup.py build_ext --inplace
But I am getting the below error. my guess is I am missing certain parameters to cythonize(), tried to research without any luck.
First, change your setup.py file to only use distutils
from Cython.Build import cythonize
from distutils.core import setup, Extension
setup(
name = "Consolidated Loop",
ext_modules = cythonize("consolidated_loop_C.pyx")
)
This is to facilitate the debugging for potential repliers.
Then, from a few experiments and other SO posts Python building cython extension with setup creates subfolder when __init__.py exists and The command `python setup.py build_ext --inplace` always create a new directory
I suggest to either move your cython file in a subdirectory or remove the __init__.py
file. The latter issue very probably causes Python or Cython to guess the name of the module of the current directory, hence the dash issue. Also, setup.py
files cannot live in the directory of the module and that will cause trouble.
If you intend to distribute or package your code, the former option (moving cleanly the files in a subdirectory with its own __init__.py
, etc) is preferable. Else, just remove __init__.py
and be done. This will create, with build_ext --inplace
, a locally available Python module consolidated_loop_C.so
.