Python中无法导入Cython模块,请求问题排查协助
解决Cython模块导入失败的问题
第一步:修正setup.py的文件名匹配错误
你的setup.py中指定的pyx文件名是my_cython.pyx,但实际要编译的文件是cython_file.pyx,这会导致编译目标不匹配,先修改setup.py代码:
from setuptools import setup from Cython.Build import cythonize import numpy # 改为实际的pyx文件名 setup( ext_modules=cythonize('cython_file.pyx'), include_dirs=[numpy.get_include()] )
第二步:重新编译模块
进入cython_code目录,执行编译命令:
python setup.py build_ext --inplace
编译完成后,目录下会生成cython_file.pyd(Windows系统)或cython_file.so(Linux/macOS系统),这就是可导入的二进制模块文件。
第三步:解决Python导入路径问题
由于main.py在program目录,cython_code是同级目录,Python默认不会搜索同级子目录,可通过以下两种方式解决:
方式1:在main.py中添加搜索路径
在main.py开头加入代码,将cython_code目录加入Python的模块搜索路径:
import sys import os # 获取项目根目录(当前文件的上级目录) project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # 添加cython_code目录到搜索路径 sys.path.append(os.path.join(project_root, 'cython_code')) # 现在可以正常导入模块 import cython_file
方式2:移动编译后的模块文件
直接把cython_code目录下的cython_file.pyd(或.so)文件复制到program目录下,之后main.py里直接执行import cython_file即可。
额外检查项
- 确认编译用的Python解释器和运行
main.py的是同一个,PyCharm中若有多个虚拟环境,需保证环境一致。 - 确保Cython是安装在当前使用的Python环境中的。
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

