pyinstaller 多(单)文件打包流程【打包、防止反编译 快速上手教程】 ,附使用.spec打包时,增加--key命令进行加密的方法

(结尾附上使用.spec打包时,增加--key命令进行加密)

最近写了个功能GUI,需要对源码打包生成exe可执行文件,结果遇到了几个坑,耗费了些时间才解决,现在进行个总结,希望网友们能更加快速入门pyinstall。这个总结并不全面,因为已经足够我使用了,按照步骤可快速打包完成。仅供大家参考!


说明

本文偏向于多文件打包,单文件本身也难度不大,而且多文件的方法也适用于单文件。

pyinstaller 官方

pyinstaller 官网 https://pypi.org/project/pyinstaller/
pyinstaller 官方文档 https://pyinstaller.readthedocs.io/

pyinstaller 常用的命令:

-F:仅仅生成一个文件,不暴露其他信息,启动较慢。
-D:(默认)生成一个文件夹,包含可执行文件和相关动态链接库和资源文件等,启动快。
-w:窗口模式打包,不显示控制台。
-c:跟图标路径,作为应用icon。
-n 指定项目(产生的 spec)名字。如果省略该选项,那么第一个脚本的主文件名将作为 spec 的名字

单文件打包(简单说明)

以下每行代码代表一种打包方式,仅列举了常用的几种,test.py文件为打包的python源码文件

pyinstaller -F -i ./test.ico --key 035634 test.py	# 配置图标、防反编译打包
pyinstaller -F -i ./test.ico test.py				# 配置图标
pyinstaller -F test.py								# 默认打包方式
打包成一个exe文件还是一个文件夹(-F -D问题)

-D是默认的,打包成一个文件夹,文件夹中含有可执行文件和相关动态链接库和资源文件,优点是执行速度快,也就是打开软件的速度快。上面的说法对单文件和多文件都适用。


步骤

1. 整理文件目录:

(将.py文件放到项目根目录下,其他格式文件放到文件夹如file1里)

|—file1
|—— ###.csv
|—— ###.jpg
|—file2
|—— ###.txt
|—test1.py
|—test2.py
|— …

2. 安装库文件:

pip install Pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple

3. 生成spec文件:

pyi-makespec -D -w--key 23456 gui4.py
(需要任何命令,在这一个步骤中加入,如 --key 23456,加入后生成的spec文件将会自动配置相关命令内容,详情请查看.spec文件。注意:无法在pyinstaller ###.spec时候配置任何命令)

4. 修改spec文件:

下面.spec文件作为参考,下文有相关步骤解释。

# -*- mode: python ; coding: utf-8 -*-

block_cipher = pyi_crypto.PyiBlockCipher(key='570333')
SETUP_DIR = 'D:\\Users\\Desktop\\GUI5'

a = Analysis(['gui4.py','GetFollowerData.py','GetLikesData.py','GetUserData.py','MyLog1.py','MyLog2.py'],
             pathex=[SETUP_DIR],
             binaries=[],
             datas=[(SETUP_DIR + '\\file','file'),(SETUP_DIR + '\\user_files','user_files')],
             hiddenimports=[],
             hookspath=[],
             hooksconfig={},
             runtime_hooks=[],
             excludes=[],
             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, 
          [],
          exclude_binaries=True,
          name='biliFM',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          console=False,
          disable_windowed_traceback=False,
          target_arch=None,
          codesign_identity=None,
          entitlements_file=None,
          icon=SETUP_DIR + '\\file\\icon.ico' )
coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas, 
               strip=False,
               upx=True,
               upx_exclude=[],
               name='biliFM')

a. 可使用常量如SETUP_DIR设置一个工程文件路径,以简化后面的路径
b. 将所有.py文件名添加到Analysis(['','',''])
c. 添加工程文件绝对路径到pathex['']
d. 将其他文件夹和文件夹名称添加到datas[(,),(,)] ,空文件夹无效,可添加占位文件,如空的txt文件
e. 通过 consolo = True 或 False 设置控制台显示
f. 通过 name= 设置exe文件的文件名
g. 通过 icon= 设置exe文件图标(如果第二步没有适用-n命令,则.spec文件中没有这行代码,可通过手动添加,其他代码也同样如此)
h. (如果执行exe出现No Module named xxx),在Hidden import中添加
i. 将所有路径中的\替换为\\

5. 开始打包

运行.spec文件,如pyinstaller test.spec

6. 反编译测试(如果有需要可进行这一步)

a. 克隆python-exe-unpacker中的pyinstxtractor.py文件到exe所在目录
b. 运行python pyinstxtractor.py ###.exe(如果使用了--key,且已经发挥作用,那么反编译会产生error,可起到一定的防止反编译效果)


结尾还是想说一下,刚接触pyinstall时候,不知道使用spec打包怎么进行加密,就算使用了--key命令,让然不起作用。后来才发现,需要在生成.spec文件的时候加入命令,如pyi-makespec -D -w --key 23456 gui4.py。加入的命令会在.spec文件中有所体现,具体可亲自尝试探索!

  • 10
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
使用pyinstaller进行打包,可以通过以下步骤生成.spec文件: 1. 首先,使用命令`pyinstaller -F -w xxx.py`来生成一个可执行的exe文件。 2. 然后,修改上一步生成的xxx.spec文件,添加资源文件。在.spec文件中,可以指定需要包含的资源文件,例如图标文件等。 3. 最后,使用命令`pyinstaller xxx.spec`来将.spec文件打包为exe文件。 需要注意的是,上述步骤中的xxx.py是指要打包Python源码文件,而xxx.spec是由pyinstaller生成的配置文件。在生成的.spec文件中,可以根据需要进行修改和配置,以满足特定的打包需求。 你可以参考pyinstaller的官方文档和官方网站,了解更多关于pyinstaller的详细信息和常用命令。\[1\]\[2\] 在打包,可以根据需要选择不同的打包方式。常用的几种打包方式包括: - `pyinstaller -F -i ./test.ico --key 035634 test.py`:配置图标和防反编译打包。 - `pyinstaller -F -i ./test.ico test.py`:配置图标。 - `pyinstaller -F test.py`:默认打包方式,将源码文件打包成一个exe文件。 这些命令可以根据实际需求进行选择和使用。\[3\] #### 引用[.reference_title] - *1* [Pyinstaller打包spec添加资源文件,亲测可用](https://blog.csdn.net/THMAIL/article/details/106168362)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [pyinstaller 多()文件打包流程打包防止反编译 快速上手教程】 ,使用.spec打包增加--key命令...](https://blog.csdn.net/qq_41999731/article/details/124245642)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

COOL_DREAM_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值