Windows端Python3打包成exe详细步骤-动态加载打包

最近有个项目是用Python做的,在交付的时候需要进行打包,从网上找了很久,发现虽然资料很多,但是真正能解决我现在的问题的不多。

这里我就讲下我是怎样打包含有动态加载的项目吧。

【背景介绍】:

当前程序主程序是Main.py文件,其他sConfig.py都是辅助于Main.py的,其中Filature比较特殊,正常代码是不会加载,只有在平台跑起来之后,才会加载Filature里面的*.py文件。按照网上的方法打包,没有一个成功的,每次到加载Filature里面的文件就提示报错。在网上找了很多资料,基本没有一篇文章有讲到类似的场景的。

【打包步骤】

1.安装pyinstaller(Python版本为3.6以后版本)

pip3 install pyinstaller  # 注意Python3最好写pip3,如果电脑里有多个python版本,pip可能指向的不一定是python3

  安装的地方不多介绍,出坑的可能性不大。

2.继续打开Windows的命令行窗口,切换到需要打包的程序的目录

cd C:\Users\\2501000520\Desktop\Kid\\Engine\

# 用命令行切换到需要打包的程序的目录,可以直接进行复制。

3. pyinstaller -F xxx.py(xxx.py,打包的文件)

分水岭(以上步骤,基本大多数的文章都是这么写的,但是针对动态加载的程序,就不能单纯的用上面的指令)

3.1 通过使用命令pyi-makespec -w xxx.py能够生成相应的xxx.spec文件

因为此处我们需要用到一些动态加载的东西,直接打包,并不会包含一些config的内容。

此处我们需要详细的阅读下.spec文件

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

block_cipher = None
SETUP_DIR = 'C:\\Users\\2501000520\\Desktop\\Kid\\Engine\\'   
# 此处定义了需要打包的文件的路径地址,因为后面多处会用到,这里先定义个变量

a = Analysis(['Main.py'],
             pathex=['C:\\Users\\2501000520\\Desktop\\Kid\\Engine'],
             binaries=[],
             datas=[(SETUP_DIR+'Config', 'Config'), (SETUP_DIR+'Filature', 'Filature')],  
             # 默认此处为空,我们需要加上我们需要额外加载的文件,比如config
             hiddenimports=[],
             hookspath=[],
             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,
          a.binaries,
          a.zipfiles,
          a.datas,
          [],
          name='Main',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          upx_exclude=[],
          runtime_tmpdir=None,
          console=True )   # EXE表示执行相关,console表示是否需要显示窗口

按照如上设置,讲需要动态加载进来的文件,比如config,比如filature,添加到datas里面。

可修改的位置:

  • 添加py_files列表,包含项目需要的所有python脚本
  • 添加add_files列表,包含涉及到的所有资源文件,每个文件是2元组的形式存放
  • name='Main', 制定可执行程序名字
  • console=False, 制定可执行程序执行时不显示控制台窗口
  • icon='', 设置程序图标,ico格式文件(16*16)

3.2 将修改后的.spec文件保存

3.3 执行setup.spec文件。项目路径下输入指令:pyinstaller -F main.spec

3.4 在根目录下找到dist目录,然后将需要动态加载的内容复制到Main.exe同目录(不修改.spec文件默认的时候是不会搜索根目录下的其他文件的)

3.5 运行Main.exe

3.6 打包完成

补充:

需要查看pyinstaller有哪些指令的可以参考以下文章:

https://blog.csdn.net/chenzhanhai/article/details/85334919

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将Python Flask应用程序打包可执行文件,你可以使用多种工具。其两个流行的工具是cx_Freeze和Py2exe。cx_Freeze可以将Python应用程序转换为可在Windows、Linux和macOS上运行的可执行文件,并且可以自动识别和打包应用程序的所有依赖项。Py2exe则是一个古老但仍然有用的工具,它可以将Python应用程序转换为Windows可执行文件,并提供一些选项来优化生的可执行文件的大小和性能。这两个工具都使用Python语言编写,易于安装和使用。\[1\]\[2\] 如果你想使用PyInstaller打包Flask应用程序,你可以按照以下步骤进行操作: 1. 首先,确保你已经安装了PyInstaller。你可以使用pip命令来安装它。 2. 找到Python的存储路径,并进入Scripts文件夹。在这个文件夹,你可以找到pyinstaller.exe的地址。 3. 在PyCharm,打开File->Settings->Tools,然后点击左上角的"+"按钮。在弹出的对话框,填写名称为"pyinstaller",并输入刚才记住的pyinstaller.exe的地址。点击确定,加载外部工具。 4. 对于单个文件的打包,确认需要打包Python文件名,比如app.py。在PyCharm,输入以下命令来对app.py进行打包python -m pyInstaller -F app.py。等待打包后,在与app.py相同的文件路径下,你可以找到dist文件夹,其包含打包好的app.exe可执行文件。 5. 对于整个项目的所有文件的打包,使用命令行进入项目路径,并确定主函数为app.py。然后在命令行界面,输入以下代码:pyi-makespec app.py。这将生一个.spec文件。接下来,你可以使用命令pyinstaller app.spec来打包整个项目的所有文件。 希望这些信息对你有帮助!\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [将python项目(django/flask)打包exe和安装包](https://blog.csdn.net/General_zy/article/details/121307835)[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] - *3* [Python Flask 打包exe发布](https://blog.csdn.net/weixin_40829804/article/details/129412968)[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 ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值