我试图在Windows上编译一个Cython文件(.pyx),一个我刚从.py保存的文件。这是我的项目目录路径。
c:\..\Project\App\Analyzer\
_init_.py
Few_other_files.py
consolidated_loop_C.pyx
cl_setup.py
这是我的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")
)
我使用下面的语句来编译同一个文件夹。
python cl_setup.py build_ext --inplace
但我收到以下错误。我的猜测是我缺少cythonize()的某些参数,试图研究没有任何运气。
答案 0 :(得分:4)
首先,将setup.py文件更改为仅使用distutils
from Cython.Build import cythonize
from distutils.core import setup, Extension
setup(
name = "Consolidated Loop",
ext_modules = cythonize("consolidated_loop_C.pyx")
)
这是为了便于调试潜在的回复者。
然后,从一些实验和其他SO帖子Python building cython extension with setup creates subfolder when __init__.py exists和The command `python setup.py build_ext --inplace` always create a new directory
我建议您将cython文件移动到子目录中,或删除__init__.py
文件。后一个问题很可能导致Python或Cython猜测当前目录模块的名称,因此是破折号问题。此外,setup.py
文件不能存在于模块的目录中,这将导致麻烦。
如果您打算分发或打包您的代码,那么前一个选项(干净地移动具有自己的__init__.py
的子目录中的文件等)是可取的。否则,只需删除__init__.py
即可。这将使用build_ext --inplace
创建一个本地可用的Python模块consolidated_loop_C.so
。