Lazy loaded image
Lazy loaded image将Maya的python代码编译成pyd
字数 891阅读时长 3 分钟
2024-8-30
2025-10-11
type
status
date
slug
summary
tags
category
icon
password
 
notion image

关于将py文件编译为pyd

当你想把一个python脚本分享出去,又不想暴露源码的时候,可以将py文件编译成pyd或pyc文件。
pyd格式是D语言(C/C++综合进化版本)生成的二进制文件,实际也会是dll文件。
该文件不可以被反编译,只能被反汇编。
而pyc文件,虽然也是py编译后的格式,但是pyc非常容易被反编译,基本上可以说编译了个寂寞。
我之前用过angelic47大佬写的pyprotect,这是个第三方python加密混淆工具,编译后的pyc代码也具有很高的反编译难度。(其实我自身更偏向于pyc文件,不用像pyd一样太考虑解释器版本和系统平台)
不过后来pyprotect工具无法使用了,这也是我开始使用pyd格式进行编译的原因。
废话到这里,下面开始说下整个编译过程。(这里以Maya2018为例)

1.找到MSC版本和对应VS版本

msc是微软的C编译器,安装对应的VS版本会带有。
如何查看MSC版本,这里有两种方式:
使用cmd命令行工具,打开C:\Program Files\Autodesk\Maya2018\bin\mayapy.exe
notion image
或者在Maya的script editor里:
notion image
可以看到,Maya2018使用的是MSC v.1900版本,通过下表来找到对应的VS版本。
对应的版本是Visual C++ 2015,在官网上进行下载安装。
也可以到https://msdn.itellyou.cn/进行下载。
(推荐后者,微软官网的下载体验巨差)
notion image
下载完成后安装,记得勾选
notion image

2.安装Cython

刚刚安装的是编译时所需的依赖,而我们要使用Cython将py文件编译成pyd。
https://github.com/cython/cython下载源代码进行编译安装,或者到我的网盘分享链接进行下载。
下载完解压后,先放一边。
在此之前需要在C:\Program Files\Autodesk\Maya2018\Python下新建两个文件,includelibs 
notion image
  • 拷贝C:\Program Files\Autodesk\Maya2018\lib里的python27.lib文件到C:\Program Files\Autodesk\Maya2018\Python\libs
  • 拷贝C:\Program Files\Autodesk\Maya2018\include\python2.7里的所有文件到C:\Program Files\Autodesk\Maya2018\Python\include
然后用管理员模式打开cmd命令行工具,cd定位到刚刚解压的cython文件夹下。
运行:
安装完成后就可以开始编译代码了。

3.编译成pyd文件

在你的代码中,写一个setup.py文件。
打开cmd命令行工具,cd到你的代码文件夹,运行:

📎 参考文章

  • 引用文章
💡
有关Notion安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~
上一篇
Unreal 动画重定向
下一篇
日本医疗团队研发出长牙药:或于2030年商业化