python脚本打包封装为EXE文件并加密

背景说明

当你编写好一个python脚本,但不想把源码公开,那如何将脚本分享给其他人呢?
有2种办法:

  1. 封装为EXE
    将Python脚本打包成可执行文件(exe),一个常用的工具是PyInstaller。打包过程结束后,在该脚本同级的dist目录下,你会找到生成的.exe文件。对于Windows平台,默认情况下,可执行文件位于一个与你的脚本同名的子目录内。

优点:(最直白的优势就是,这样其他人直接双击执行。展开来讲,好处非常多)

  • 跨平台:
    PyInstaller支持在Windows、macOS和Linux上运行,这意味着你可以为这些操作系统构建独立的应用程序,而无需用户安装Python环境。

  • 一键部署:
    通过简单的命令行操作,PyInstaller可以将你的Python脚本及所有依赖项(包括第三方库)打包进一个可执行文件或几个捆绑在一起的文件。这样,你可以轻松地分发应用程序,用户只需点击即可运行,无需关心Python环境配置问题。

  • 包含所有依赖: PyInstaller自动检测并包含脚本所需的所有依赖库,确保了应用程序在没有安装相应库的系统上也能正常运行。

  • 优化和压缩: PyInstaller支持对最终的可执行文件进行优化和压缩,减少其体积,便于在网络上传输和存储。

  • 无安装要求: 用户不需要安装Python或任何其他依赖来运行通过PyInstaller打包的应用程序,这对于非技术用户特别友好。

  • 支持多种类型的输出: 可以生成单个文件的可执行文件,也可以生成包含多个文件(如.dll或.so库)的目录结构,适应不同的部署需求。

  • 增强的安全性: 将源代码打包成可执行文件可以在一定程度上保护你的代码免受逆向工程,尽管不是绝对安全,但提高了复制或篡改的难度。

  • 当然也有缺点容易被反编译,同样可以获取源码(不用太担心,小白肯定反编译不了。。。)

  1. 将python文件二进制pyd文件
    将Python文件加密为PYD文件实际上是指将Python代码编译为扩展模块。PYD文件是Windows平台上Python的动态链接库(DLL)文件,相当于在Unix/Linux系统中的SO文件。这种做法可以让Python代码以二进制形式存在,提高一定的反编译难度,从而达到某种程度上的“加密”效果。
    要将Python代码编译为PYD文件,通常需要使用Cython或其他类似工具。Cython允许你使用静态类型注释的Python代码,并将其编译为C代码,然后进一步编译为机器代码。

具体操作

安装PyInstaller

首先,你需要安装PyInstaller。打开命令行工具(如CMD或PowerShell),然后运行以下命令:

方法1:命令行操作:
pip install pyinstaller
方法2:pycharm操作
直接搜索,安装即可,如下图

在这里插入图片描述

打包脚本

假设你有一个名为my_script.py的Python脚本,你想将其打包成可执行文件。在命令行中,导航到该脚本所在的目录,然后运行以下命令:

方法1:命令行操作,需要进入脚本所在的目录,才可以执行。
pyinstaller --onefile my_script.py
方法2:pycharm操作
打开python脚本项目--右键打开菜单(Open in),选择打开Terminal(其实就是CMD命令窗口)--执行命令

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

至此就可以把脚本打包为exe,把这个文件发送分享,对方可直接运行(Windows系统)

若想在exe基础上,实现python加密,防止被反编译,还可以这样操作。

要将Python代码编译为PYD文件,通常需要使用Cython或其他类似工具。Cython允许你使用静态类型注释的Python代码,并将其编译为C代码,然后进一步编译为机器代码。下面是使用Cython的基本步骤:

安装Cython: 首先,你需要安装Cython。可以通过pip安装:

pip install cython

编写或修改Python代码: Cython可以直接编译标准的Python脚本,但如果想要获得性能提升或更有效的加密效果,建议在关键部分使用Cython的静态类型声明。

创建Cython文件: 假设你有一个名为example.py的Python脚本,你可以创建一个example.pyx文件,在其中使用Cython语法。如果原始脚本很简单,直接将内容拷贝过来可能就足够了;如果追求性能,就要适当添加类型注解。

编写setup.py文件: 你需要一个setup.py文件来指导编译过程。一个基本的例子如下:


from setuptools import setup
from Cython.Build import cythonize
setup(
    name='MyExtension',
    ext_modules=cythonize("example.pyx"),
    language_level=3
)

编译为PYD: 运行以下命令来编译example.pyx为example.pyd(在Windows上)或相应的动态链接库(在Unix/Linux上)。

python setup.py build_ext --inplace

原来的 引用方式改为pyd

完成以上步骤后,你将在build目录下找到编译后的PYD文件(或在Unix/Linux上的SO文件),这个文件就是你加密过的Python扩展模块,可以在Python程序中像导入普通模块一样使用它。

请注意,虽然这种方法增加了代码被阅读和理解的难度,但有经验的攻击者仍有可能通过逆向工程来分析PYD文件的内容(难度很高)。此外,使用Cython的主要目的通常是性能优化,而不是安全加密。

  • 12
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值