大家好,本期转发一篇来自【CAE软件二次开发lab】的文章。
以下正文:
为了保证代码的安全,需要将代码编译为仅机器可读的格式。app开发者可以使用加密技术将代码编译为二进制格式。
当点击Compile按钮,一个额外的选项将出现,提醒用户选择是否以【Pack Compilation Dependencies】方式编译。
如果用户没有勾选复选框,则编译过程将不考虑任何其他包的依赖,pyd文件仅仅包含主文件的代码。
如果用户勾选按钮,pyd文件将不仅包含主文件的代码,还包含其他ansa.ImportCode函数导入的模块。
注意:任何通过系统路径(sys.path)模块都不能导入到最终的二进制文件中,它通常被考虑为一个外部的依赖。
如下实例:
import ansa
import sys
import numpy
sys.path.append('my_functions')
import my_functions
from my_functions import *
ansa.ImportCode('my_library')
from my_library import shell_normal_vector
def foo():
pass
在上面的实例中,sys和numpy库不能被导入。my_functions库也不能被导入。因为其是设置在系统路径中的。而且,所有4个库对于app都是外部库依赖 。如果用户选择【Pack Compilation Dependencies】选项,my_library模块将在最终的二进制文件中导入。
加密脚本可以采用ansa.CompileScript函数来进行批处理。
ansa.CompileScript(fileInput, fileOutput, moduleName, mode)
[必填参数]] fileInput - 要编译脚本的路径字符串。
[必填参数] fileOutput - 创建的编译文件的目标路径字符串。
[必填参数] moduleName - 模块名字符串。
[可选参数] mode(布尔值) - 仅对Python脚本有效。
在编译文件中包含脚本导入模块的选项。(仅当使用ansa.ImportCode功能导入时有效)
True, 在已编译脚本中包含依赖项。(默认)
False, 其他。
import ansa
def main():
ansa.CompileScript("/home/user/scripts/some_script.py","/home/user/scripts/some_script.pyb","moduleName")
if __name__ == '__main__':
main()
警告:
本文提供的加密方法是BETA CAE Systems开发的。不要和python编译器自动生成的字节代码文件pyc混淆。
本文完。