You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

安装含Cython编译文件的Python包时编译版本不生效问题求助

问题核心原因
  1. 你自定义的build_py类缺少sysconfig模块导入,逻辑无法正常执行
  2. 你没有将自定义的build_py命令注册到setup参数中,导致过滤.py源码的逻辑完全没有生效,所有.py文件都被打包进了安装后的包
  3. 多次构建残留的缓存、临时文件会污染最终的安装包
修复步骤

1. 修正setup.py代码

  • 头部新增导入:import sysconfig
  • 在setup()的参数中新增一行配置,注册自定义构建命令:
    cmdclass={'build_py': build_py},
    

2. 清理旧构建产物

执行以下命令删除所有残留的临时文件、缓存、之前编译的扩展:

rm -rf build dist *.egg-info __pycache__
find . -name "*.so" -o -name "*.pyd" -o -name "*.pyc" | xargs rm -f

3. 执行安装命令

两种安装方式二选一即可:

方式一:直接源码安装

pip install . --force-reinstall

方式二:构建wheel包后安装

python setup.py bdist_wheel
pip install dist/my_pkg-0.1-cp38-cp38-linux_x86_64.whl --force-reinstall
验证结果

离开项目根目录后执行测试代码,如果输出前缀为cyfunction,说明已经成功加载Cython编译后的版本。
如果仍有问题,可以到Python的site-packages目录下查看mypkg的安装目录,确认需要编译的模块对应的.py源码已经被过滤,仅保留.so扩展文件即可。

内容的提问来源于stack exchange,提问作者student1868

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 06:45:03