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

如何运行easycython编译生成的Python .pyd或.so扩展文件?

报错原因说明

.pyd是Windows平台的Python C扩展二进制文件,.so是Linux平台的对应Python扩展文件,二者都不属于可直接通过python 文件名执行的纯文本Python脚本。你直接执行二进制文件时,Python解释器会尝试把二进制内容按纯文本源码解析,才会抛出编码类报错。

正确运行方法

C扩展模块的用法和普通Python模块完全一致,核心是导入调用,不能直接执行文件本身,Windows和Linux的操作逻辑基本相同。

Windows环境运行.pyd文件

  • 先确认文件命名规范:你生成的encryption.cp38-win_amd64.pyd的模块名是encryption,后缀的版本、平台标识是Python自动生成的,无需修改
  • 将.pyd文件放入Python可检索的路径:可以是当前执行命令的工作目录、Python安装目录下的site-packages文件夹,或者手动将.pyd所在路径加入sys.path
  • 两种运行方式可选:
    1. 编写调用脚本执行:新建纯Python脚本比如run.py,内容如下,之后执行python run.py即可
      import encryption
      # 此处调用原encrypt.py中的入口逻辑即可,比如原脚本入口为main函数就写
      encryption.main()
      
    2. 如果原encrypt.py写有if __name__ == "__main__"的直接执行逻辑,可以直接用模块方式运行:
      python -m encryption
      

Linux环境运行.so扩展文件

操作逻辑和Windows完全一致,仅注意两个差异点:

  • 编译生成的扩展文件后缀为.so,命名格式一般为encryption.cpython-38-x86_64-linux-gnu.so,模块名同样为encryption
  • 注意给.so文件配置正确的读权限,避免导入时权限不足报错
注意事项

运行扩展使用的Python版本,必须和编译该扩展时使用的Python版本完全一致,比如你这里是Python3.8编译的cp38版本扩展,就不能用Python3.7/3.9等其他版本导入运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:00:02