2025年3月28日 星期五 甲辰(龙)年 月廿七 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Python

Python源代码加密手段 保护源码

时间:06-22来源:作者:点击数:32

PYTHON源代码加密手段 保护源码 

1、编译.pyc文件

  • python -m py_compile info.py(py文件路径)
  • python -m py_compile py文件绝对路径
  • pyc会生成在目录下的__pycache__下(前后有双下划线)
  • 生成的文件名命名方式:源文件名.cpython-python版本.pyc
  • 运行:
  • python info.cpython-38.pyc

2、打包为exe

安装:

  • pip3.8 install -U pyinstaller

pyinstaller将单个py文件打包:

  • Pyinstaller -F info.py -- 打包exe
  • Pyinstaller -F -w info.py -- 不带控制台的打包 不带黑框
  • Pyinstaller -F -i test.ico info.py -- 打包指定exe图标打包
  • 常用选项:
  • -h,–help 查看该模块的帮助信息
  • -F,-onefile 产生单个的可执行文件
  • -D,–onedir 产生一个目录(包含多个文件)作为可执行程序
  • -a,–ascii 不包含 Unicode 字符集支持
  • -d,–debug 产生 debug 版本的可执行文件
  • -w,–windowed,–noconsolc 指定程序运行时不显示命令行窗口(仅对 Windows 有效)
  • -c,–nowindowed,–console 指定使用命令行窗口运行程序(仅对 Windows 有效)
  • -o DIR,–out=DIR 指定 spec 文件的生成目录。如果没有指定,则默认使用当前目录来生成 spec 文件
  • -p DIR,–path=DIR 设置 Python 导入模块的路径(和设置 PYTHONPATH 环境变量的作用相似)。也可使用路径分隔符(Windows 使用分号,Linux 使用:号)来分隔多个路径
  • -n NAME,–name=NAME 指定项目(产生的 spec)名字。如果省略该选项,那么第一个脚本的主文件名将作为 spec 的名字
  • -i 选择图标

pyinstaller将多个py文件打包:

生成spec规范配置文件:

  • pyi-makespec demo.py
  • pyinstaller [-F/-D] [-w/-c] [-i xxx.ico] demo.py
  • # -*- mode: python ; coding: utf-8 -*-
  • block_cipher = None #设置 加密,需要安装tinyaes第三方库,最多16位字符,此处在使用--key= 会有变化
  • a = Analysis(
  • ['demo.py'], # 运行的所有py文件,包括依赖的py文件
  • pathex=[], # 搜索导入的路径列表(此列表为项目绝对路径),包括选项给出的路径--paths,项目需要从什么地方导入自定义库
  • binaries=[], # 脚本需要的非python模块,包括--add-binary选项给出的名称,二进制数据
  • datas=[], # 应用程序中包含的非二进制文件,包括--add-data选项给出的名称,项目需要用到什么数据,比如图片,视频等。里面格式为tuple,第一个参数是文件路径,第二个是打包后所在的路径,其为一个元组:('image/*.png','data/image')
  • hiddenimports=[], # 假如打包后打开exe显示module not found,就要把该库添加到hiddenimports里面了
  • hookspath=[],
  • hooksconfig={}, # 挂钩配置选项由一个字典组成
  • runtime_hooks=[],
  • excludes=[], # 假如你用的python有很多库,但是你不需要用到某个,那么就把它添加到里面去,可以压缩文件大小
  • win_no_prefer_redirects=False,
  • win_private_assemblies=False,
  • cipher=block_cipher,
  • noarchive=False,
  • )
  • pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
  • exe = EXE(
  • pyz,
  • a.scripts, # 打包的脚本文件
  • # a.binaries, # 如果是单文件模式,则需要添加;多文件也可以添加
  • # a.zipfiles,
  • # a.datas,
  • [],
  • exclude_binaries=True, # 是否排除二进制文件,为True时,为排除二进制的文件,当文件交大时包含二进制文件运行较快,如果是单文件,则没有这个选项
  • name='demo', # 打包程序的名字
  • debug=False, # 是否启用调试功能
  • bootloader_ignore_signals=False,
  • # runtime_tmpdir=None, # 生成单文件时需要这个参数,定义运行时的临时文件夹
  • strip=False,
  • upx=True, # 打包的时候进行压缩,False表示不压缩;要用到一个压缩程序UPX,用于压缩文件,需要单独下载
  • console=True, # 打包后的可执行文件双击运行时屏幕会出现一个cmd窗口,不影响原程序运行,等于是是否加-w参数
  • disable_windowed_traceback=False,
  • argv_emulation=False,
  • target_arch=None,
  • codesign_identity=None,
  • entitlements_file=None,
  • """添加选项,初始化时没有的"""
  • icon="", # 指定应用程序的图标,传入路径,可以相对路径
  • )
  • coll = COLLECT(
  • """
  • 如果是单文件模式,不需要这个COLLECT类,同时需要将:
  • a.binaries,
  • a.zipfiles,
  • a.datas,
  • 这些数据文件添加到EXE中
  • """
  • exe,
  • a.binaries,
  • a.zipfiles,
  • a.datas,
  • strip=False,
  • upx=True,
  • upx_exclude=[],
  • name='main',
  • )

项目打包:

  • pyinstaller demo.spec

 

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门