一种Python脚本运行方法及系统技术方案

技术编号:33394260 阅读:23 留言:0更新日期:2022-05-11 23:13
本发明专利技术提供的一种Python脚本运行方法及系统,方法包括获取待发布Python脚本文件,利用字节码编译器对待发布Python脚本文件进行编译,以得到字节码文件;将Python环境中的库文件、字节码文件、字节码编译器和程序加载器进行打包,以得到安装包;当接收到针对一安装包发起的运行指令时,释放安装包中的库文件、字节码文件、字节码编译器和程序加载器;利用释放的字节码编译器将字节码文件编译成可执行文件;利用释放的程序加载器加载可执行文件和库文件。该方法提高了执行效率,解决Python脚本泄露的问题。脚本泄露的问题。脚本泄露的问题。

【技术实现步骤摘要】
一种Python脚本运行方法及系统


[0001]本专利技术属于软件系统
,具体涉及一种Python脚本运行方法及系统。

技术介绍

[0002]目前Python脚本主要采用以下方法运行:Python脚本调试好后,生成安装包进行发布;用户下载安装包进行安装后,会释放安装包中所有依赖的库文件、以及编写的python脚本;最后用户运行python解释器,解释执行python脚本,实现对应的功能。
[0003]但是目前Python脚本运行方法存在以下缺陷:
[0004]1、Python是一门脚本型语言,它需要一边解释一边执行,而且Python脚本每次运行时都需要解释,执行效率低。
[0005]2、Python脚本是文本文件,大多数不是加密文件,用户可以直接打开查看脚本内容,所以Python脚本发布后,难以进行产品保护。针对少部分的一些加密Python脚本,用户可以注册钩子解密脚本并执行Python脚本,但是Python脚本依然存在容易泄露的问题。
[0006]3、现有的第三方Python脚本打包方法只能简单地读取库文件,将库文件压缩成zip文件,最后生成的安装包体积过于庞大。

技术实现思路

[0007]针对现有技术中的缺陷,本专利技术提供一种Python脚本运行方法及系统,提高了执行效率,解决Python脚本泄露的问题。
[0008]第一方面,一种Python脚本运行方法,包括:
[0009]获取待发布Python脚本文件,利用字节码编译器对待发布Python脚本文件进行编译,以得到字节码文件;
[0010]将Python环境中的库文件、字节码文件、字节码编译器和程序加载器进行打包,以得到安装包;
[0011]当接收到针对一安装包发起的运行指令时,释放安装包中的库文件、字节码文件、字节码编译器和程序加载器;
[0012]利用释放的字节码编译器将字节码文件编译成可执行文件;
[0013]利用释放的程序加载器加载可执行文件和库文件。
[0014]优选地,在得到安装包之后,还包括:
[0015]发布安装包。
[0016]优选地,当接收到针对一安装包发起的运行指令时,释放安装包中的库文件、字节码文件、字节码编译器和程序加载器具体包括:
[0017]当接收到针对一安装包发起的运行指令时,对安装包的签名进行校验,当签名校验通过时,释放安装包中的库文件、字节码文件、字节码编译器和程序加载器。
[0018]优选地,利用释放的字节码编译器将字节码文件编译成可执行文件具体包括:
[0019]运行释放的字节码编译器;
[0020]利用字节码编译器校验释放的字节码文件的合法性;
[0021]当合法性校验通过后,利用字节码编译器将字节码文件编译成可执行文件。
[0022]优选地,Python环境中的库文件通过以下方式得到:
[0023]在Python环境中安装virtualenv组件,创建工作环境;
[0024]定义工作环境中的文件为库文件。
[0025]第二方面,一种Python脚本运行系统,包括:
[0026]编译单元:用于获取待发布Python脚本文件,利用字节码编译器对待发布Python脚本文件进行编译,以得到字节码文件;
[0027]打包单元:用于将Python环境中的库文件、字节码文件、字节码编译器和程序加载器进行打包,以得到安装包;
[0028]安装单元:用于当接收到针对一安装包发起的运行指令时,释放安装包中的库文件、字节码文件、字节码编译器和程序加载器,利用释放的字节码编译器将字节码文件编译成可执行文件;
[0029]运行单元:用于利用释放的程序加载器加载可执行文件和库文件。
[0030]优选地,还包括:
[0031]发布单元:用于发布安装包。
[0032]优选地,安装单元具体用于:
[0033]当接收到针对一安装包发起的运行指令时,对安装包的签名进行校验,当签名校验通过时,释放安装包中的库文件、字节码文件、字节码编译器和程序加载器。
[0034]优选地,安装单元具体用于:
[0035]运行释放的字节码编译器;
[0036]利用字节码编译器校验释放的字节码文件的合法性;
[0037]当合法性校验通过后,利用字节码编译器将字节码文件编译成可执行文件。
[0038]优选地,Python环境中的库文件通过以下方式得到:
[0039]在Python环境中安装virtualenv组件,创建工作环境;
[0040]定义工作环境中的文件为库文件。
[0041]由上述技术方案可知,本专利技术提供的Python脚本运行方法及系统,将Python脚本文件转换为字节码文件后进行传输,由于不同操作系统适用的字节码是相同的,所以降低了打包过程和字节码编译过程的处理复杂度,只需将Python脚本文件编译一次,就能在所有操作系统上使用,且将Python脚本文件转换为可执行文件,这样在执行Python脚本时,可以使用程序加载器直接加载执行,Python脚本每次运行时不需要解释,执行效率高,并且全程通过字节码文件进行传输,没有Python脚本源代码落地,不会暴露Python脚本的业务逻辑,降低了传输的安全性,解决了现有技术存在的Python脚本泄露的问题。且字节码文件不具备可读性,不能被恶意修改、或者是反编译还原成python脚本,由此也可以避免因为他人恶意修改Python脚本,导致程序执行流程被破坏的问题。另外可执行文件是二进制文件,不能被直接修改,也能够确保程序流程的完整性。
附图说明
[0042]为了更清楚地说明本专利技术具体实施方式或现有技术中的技术方案,下面将对具体
实施方式或现有技术描述中所需要使用的附图作简单地介绍。在所有附图中,类似的元件或部分一般由类似的附图标记标识。附图中,各元件或部分并不一定按照实际的比例绘制。
[0043]图1为实施例提供的Python脚本运行方法的流程图。
[0044]图2为实施例提供的可执行文件编译方法的流程图。
[0045]图3为实施例提供的Python脚本运行系统的模块框图。
具体实施方式
[0046]下面将结合附图对本专利技术技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本专利技术的技术方案,因此只作为示例,而不能以此来限制本专利技术的保护范围。需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本专利技术所属领域技术人员所理解的通常意义。
[0047]应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
[0048]还应当理解,在此本专利技术说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种Python脚本运行方法,其特征在于,包括:获取待发布Python脚本文件,利用字节码编译器对所述待发布Python脚本文件进行编译,以得到字节码文件;将Python环境中的库文件、所述字节码文件、所述字节码编译器和程序加载器进行打包,以得到安装包;当接收到针对一所述安装包发起的运行指令时,释放所述安装包中的所述库文件、所述字节码文件、所述字节码编译器和所述程序加载器;利用释放的所述字节码编译器将所述字节码文件编译成可执行文件;利用释放的所述程序加载器加载所述可执行文件和所述库文件。2.根据权利要求1所述Python脚本运行方法,其特征在于,在得到所述安装包之后,还包括:发布所述安装包。3.根据权利要求1所述Python脚本运行方法,其特征在于,所述当接收到针对一所述安装包发起的运行指令时,释放所述安装包中的所述库文件、所述字节码文件、所述字节码编译器和所述程序加载器具体包括:当接收到针对一安装包发起的运行指令时,对所述安装包的签名进行校验,当签名校验通过时,释放所述安装包中的所述库文件、所述字节码文件、所述字节码编译器和所述程序加载器。4.根据权利要求1所述Python脚本运行方法,其特征在于,所述利用释放的所述字节码编译器将所述字节码文件编译成可执行文件具体包括:运行释放的所述字节码编译器;利用所述字节码编译器校验释放的所述字节码文件的合法性;当合法性校验通过后,利用所述字节码编译器将所述字节码文件编译成所述可执行文件。5.根据权利要求1所述Python脚本运行方法,其特征在于,所述Python环境中的库文件通过以下方式得到:在所述Python环境中安装virtualenv组件,创建工作环...

【专利技术属性】
技术研发人员:张双峻黄杰王志
申请(专利权)人:深圳市联软科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1