python程序打包


python打包成可执行文件,用于在没有Python环境的地方运行该程序,与qt打包类似。(笔者写的qt打包地址:https://blog.csdn.net/qq_43700779/article/details/136994534)

1. 命令

pyinstaller --onefile --hidden-import=opencv-python --hidden-import=can --hidden-import=canlib --hidden-import=python-can --hidden-import=can.interfaces.kvaser replay_tool_22D5.py

这行命令是用于使用PyInstaller工具将名为replay_tool_22D5.py的Python脚本打包成一个独立的可执行文件。
具体来说,命令中的各个参数的含义如下:

  • –onefile: 这个参数指示 PyInstaller 将生成一个单一的可执行文件,而不是生成多个文件。
  • –hidden-import=opencv-python: 这个参数指示 PyInstaller 在打包过程中包含 opencv-python 模块,即使它没有在脚本中明确导入。
  • –hidden-import=can, --hidden-import=canlib,–hidden-import=python-can,–hidden-import=can.interfaces.kvaser: 这些参数指示 PyInstaller在打包过程中包含指定的隐藏模块,即使它们没有在脚本中明确导入。
  • replay_tool_22D5.py: 这是要打包的Python脚本的文件名。
    通过这个命令,PyInstaller将会将replay_tool_22D5.py以及指定的隐藏模块打包成一个独立的可执行文件,该文件可以在没有Python解释器的情况下在其他计算机上运行。

2. 安装

对于包含多个 .py 文件的 Python 工程,可以使用 PyInstaller 或 cx_Freeze 等工具来打包成一个可执行文件。

2.1 PyInstaller

使用 PyInstaller 打包包含多个 .py 文件的 Python 工程的步骤:
1.安装PyInstaller:在命令行中执行 pip install pyinstaller 来安装 PyInstaller。
2.运行PyInstaller:在命令行中进入Python工程的根目录,然后执行 pyinstaller --onefile your_main_script.py,其中
your_main_script.py 是主要 Python 脚本文件。PyInstaller 将会自动检测并包含主要脚本文件所依赖的其他 .py 文件。

2.2 cx_Freeze(笔者未用过)

使用 cx_Freeze 打包包含多个.py文件的Python工程的步骤:
1.安装cx_Freeze:在命令行中执行 pip install cx_Freeze 来安装 cx_Freeze。
2.创建setup.py文件:在Python工程的根目录中创建一个名为 setup.py 的文件,内容类似如下:

from cx_Freeze import setup, Executable

setup(
    name="YourProgram",
    version="1.0",
    description="Description of your program",
    executables=[Executable("your_main_script.py")]
)

其中 your_main_script.py 是主要 Python 脚本文件。
注:如果系统中有多个 Python 版本(比如Python 2和Python 3),确保使用正确的 pip 命令来安装 PyInstaller。例如:Python 3,应该使用 pip3 install pyinstaller 命令来安装 PyInstaller。
3.运行cx_Freeze:在命令行中进入 Python 工程的根目录,然后执行 python setup.py build。这将会使用 cx_Freeze 创建一个包含所有依赖的可执行文件。
无论选择使用 PyInstaller 还是 cx_Freeze,都应该能够将包含多个.py文件的Python工程打包成一个可执行文件。

3. 打包示例

3.1 在 pycharm 中执行

在这里插入图片描述
在这里插入图片描述
这个 .spec 文件是该程序的很多依赖文件或者库,第一次打包后就会有这个文件的存在
在这里插入图片描述
可修改该 .spec 文件来包含指定文件或库

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

a = Analysis(
    ['aragen'],
    pathex=[],
    binaries=[],
    datas=[('./generator/parser/schema', './generator/parser/schema'),('./generator/templates', './generator/templates')],
    hiddenimports=['generator.generator.lib_binding.vsomeip_binding', 'generator.generator.lib_binding.fastdds_binding', 'generator.generator.lib_binding.iceoryx_binding'],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    noarchive=False,
)
pyz = PYZ(a.pure)

exe = EXE(
    pyz,
    a.scripts,
    a.binaries,
    a.datas,
    [],
    name='aragen',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    upx_exclude=[],
    runtime_tmpdir=None,
    console=True,
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
)

3.2 若使用打包命令时报错

不报错当然你好我好大家好,有报错就解决报错即可,
这多半是由于使用路径不对造成的,pycharm 并没有找到 pyinstaller 的存在(即便你是安装了pyinstaller):
在这里插入图片描述

3.3 路径问题

解决方法一
带上完整的 pyinstaller 路径即可
在这里插入图片描述

该路径是怎么找到的?
在右下角的当前使用的 python 解释器的位置找到的,
在这里插入图片描述
点击查看当前解释器的设置:
在这里插入图片描述
在这里插入图片描述

顺着路径在文件系统中找,Scripts 文件下就有该插件:
在这里插入图片描述
在这里插入图片描述

解决方法二
切换目录路径到 pyinstaller.exe 存在的目录
在这里插入图片描述

打包后的文件也会在当前路径下

在这里插入图片描述
月落乌啼霜满天,江枫渔火对愁眠。
2024年3月24日21:03:26

  • 24
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值