PyR*_*der 1 python compilation cython
我试图在 Windows 上编译 Cython 文件 (.pyx),这是我刚从 .py 保存的文件。这是我的项目目录路径。
c:\..\Project\App\Analyzer\
_init_.py
Few_other_files.py
consolidated_loop_C.pyx
cl_setup.py
Run Code Online (Sandbox Code Playgroud)
这是我的 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")
)
Run Code Online (Sandbox Code Playgroud)
我正在使用以下语句在同一文件夹中进行编译。
python cl_setup.py build_ext --inplace
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误。我的猜测是我缺少 cythonize() 的某些参数,试图在没有任何运气的情况下进行研究。
首先,将 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")
)
Run Code Online (Sandbox Code Playgroud)
这是为了方便潜在回复者的调试。
然后,从一些实验和其他 SO 帖子Python building cython extension with setup 创建子文件夹,当 __init__.py 存在时,命令 `python setup.py build_ext --inplace` 总是创建一个新目录
我建议将您的 cython 文件移动到子目录中或删除该__init__.py
文件。后一个问题很可能导致 Python 或 Cython 猜测当前目录的模块名称,因此出现破折号问题。此外,setup.py
文件不能存在于模块的目录中,这会导致麻烦。
如果您打算分发或打包您的代码,前一个选项(将子目录中的文件干净利落地移动__init__.py
,等等)更可取。否则,只需删除__init__.py
并完成。这将创建build_ext --inplace
一个本地可用的 Python 模块consolidated_loop_C.so
。
归档时间: |
|
查看次数: |
5463 次 |
最近记录: |