Pyinstaller使用

本文详细介绍如何使用Pyinstaller将包含PyQt5和动态链接库的Python程序打包成单个exe文件。涉及具体参数设置如--noupx、--add-binary及--add-data等,并给出实例代码。
Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

Pyinstaller使用

工作需要,使用Pyinstaller打包python程序为单文件exe。
看下面pyinstaller命令:

pyinstaller --noupx --paths C:/Users/yn/AppData/Local/Programs/Python/Python35/Lib/site-packages/PyQt5/Qt/bin --add-binary="UnRAR64.dll;." --add-data="11.png;." --add-data="logo.ico;." -F -w --icon=logo.ico test.py

首先看--paths C:/Users/yn/AppData/Local/Programs/Python/Python35/Lib/site-packages/PyQt5/Qt/bin,我用到了PyQt5的库,所以我把这个路径加进去,否则是找不到PyQt5的链接库的。

--noupx:是不适用upx,因为我使用了–upx-dir DIR之后,程序启动失败,说找不到相关qt的库(不知道什么原因),所以我这里去掉了upx。

--add-binary="UnRAR64.dll;.":因为我程序用到了动态链接库UnRAR64.dll,所以我把这个加进去exe里面。前面是UnRAR64.dll的当前路径,后面是加到exe之后的路径,我选择是当前目录,所以我程序里面直接使用了“UnRAR64.dll”,说明在当前路径下去找。

--add-data="logo.ico;.":程序里面用到了logo.ico来作为应用程序左上角的图标,所以我要把这个logo.ico加进去exe里面,否则打开程序之后,左上角不显示小图标。但是仅仅加这个选项是不够的,还要在程序代码里面加相关代码:

def resource_path(relative_path):
    """ Get absolute path to resource, works for dev and for PyInstaller """
    try:
        # PyInstaller creates a temp folder and stores path in _MEIPASS
        base_path = sys._MEIPASS
    except Exception:
        base_path = os.path.abspath(".")

    return os.path.join(base_path, relative_path)

...

self.setWindowIcon(QIcon(resource_path("logo.ico")))

这样之后才能正常显示出来。但我不明白为什么UnRAR64.dll不用程序里面加相关代码就可以直接使用?

-F:表示是单文件exe。

-w:表示有窗体显示,因为我用了PyQt5。

--icon=logo.ico:给这个应用程序添加图标,要不然就是python默认的图标。

更多详细内容,请去查看Pyinstaller文档和谷歌搜索相关内容。

Pyinstaller官方文档

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### 使用 PyInstaller 打包 Python 应用程序 #### 工具简介 PyInstaller 是一种开源工具,能够将 Python 脚本与其所有依赖项一起打包成一个独立的可执行文件。这种工具的最大优点是可以自动解析和包含所有的依赖库,并支持跨平台操作[^2]。 #### 安装 PyInstaller 为了使用 PyInstaller,首先需要确保其已经正确安装在开发环境中。可以通过以下命令进行安装: ```bash pip install pyinstaller ``` 如果由于网络原因无法正常安装,可以考虑更换为国内镜像源以提高速度[^5]: ```bash pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple ``` #### 基础打包流程 假设有一个名为 `app.py` 的 Python 文件需要被转化为可执行文件,那么最简单的方式就是运行以下命令: ```bash pyinstaller app.py ``` 此命令会在当前目录下生成两个主要文件夹——`build` 和 `dist`。其中,最终的可执行文件位于 `dist` 文件夹中。 #### 自定义打包选项 除了基本的打包外,还可以通过增加不同的参数来自定义输出形式: 1. **无控制台模式** 对于 GUI 类型的应用程序来说,默认情况下打开时会出现黑框(即终端)。为了避免这种情况发生,可以在命令后面加上 `--noconsole` 参数: ```bash pyinstaller --noconsole app.py ``` 2. **单文件模式** 默认情况下,PyInstaller 将会把资源拆分成多个部分存储在一个文件夹内。如果你希望整个应用被打包成单一文件的形式,则应该添加 `--onefile` 参数: ```bash pyinstaller --onefile app.py ``` 3. **设置图标** 若要给生成的 EXE 设置自定义图标,可以用 `-i` 或者 `--icon` 来指定 ICO 图标路径: ```bash pyinstaller --onefile --noconsole --icon=logo.ico app.py ``` 4. **隐藏导入模块** 当某些第三方库并不想暴露出来或者因为版权等原因不想公开的时候,就可以采用 `--hidden-import` 参数来隐匿这些模块的信息: ```bash pyinstaller --hidden-import=some_module app.py ``` #### 处理多版本 Python 环境 当开发者机器上存在多个不同版本的 Python 解释器时,在调用 PyInstaller 之前应当明确指明所使用的具体解释器版本。例如,若目标脚本基于 Python 3.8 编写,则应在对应虚拟环境中激活后再执行打包指令[^3]。 另外需要注意的是,尽管 PyInstaller 可以很好地兼容大多数标准库以及流行框架,但仍有少部分特殊类型的扩展可能存在问题。这时就需要查阅官方文档寻找解决方案或手动调整 spec 文件来进行更精细的配置[^2]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值