Python程序打包成exe文件——pyinstaller模块的安装和使用

在使用python写好程序后,要将程序打包成exe文件,需要使用到pyinstaller包。但在pyinstaller的安装过程中会遇到各种问题,导致安装不成功或无法使用。

经历了多次安装失败,在查阅了各种方法后,最终解决了问题,并成功安装pyinstller。这里将安装过程进行描述,记录遇到的问题及解决方法。

1 安装pyinstaller

打开命令提示符,使用“pip install”命令安装pyinstaller:

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

这里使用了清华的镜像源。

运行结果如下图:

看到“Successfully installed...”的字样,可知已安装成功。

1.1 报错:“'pyinstaller' 不是内部或外部命令,也不是可运行的程序或批处理文件。”

使用“pyinstaller --version”命令查看是否安装成功:

提示“‘pyinstaller’不是内部或外部命令……” 。

查阅资料可知,在pyinstaller安装后,系统不会将其路径加入环境变量,需要手动添加。

其实,在上述安装成功界面的WARNING中可以看见,“... and pyinstaller.exe are installed in 'C:\Users\...\AppData\Roaming\Python\Python311\Scripts' which is not on PATH.”可知其安装路径,同时也提示,该路径未被加入到环境变量中。

于是手动将该安装路径加入到环境变量中。

1.2 报错:“The 'pathlib' package is an obsolete backport ... Please remove this package ... using conda remove ...”

将pyinstaller的安装路径加入环境变量后,再在命令提示符中使用“pyinstaller --version”命令,查看是否安装成功:

又报出错误:“The 'pathlib' package is an obsolete backport ... Please remove this package ...”

查阅资料可知,需要将pathlib包移除,因为该包与pyinstaller不兼容,因此要移除pathlib包。

根据有些博主的建议,在移除pathlib包的时候,尽量不要使用“conda remove pathlib”命令,应使用“pip uninstall pathlib”命令:

pip uninstall pathlib

1.3 报错:“PermissionError: [WinError 5] 拒绝访问。”

在卸载pathlib包的过程中,运行卸载命令后,结果如下:

报出“PermissionError: [WinError 5] 拒绝访问。” 的错误。

再试试“conda remove pathlib”命令(虽然有的博主不建议这么做,但还是想试一下):

报出“EnvironmentNotWritableError: The current user does not have write permission to the target environment.”的错误。可见当前用户不具有修改该文件的权限。

为了具有更高的权限,使用管理员身份运行命令提示符,然后再卸载pathlib包,即可成功。

运行结果如下:

看到“Successfully uninstalled pathlib-1.0.1”,可知pathlib已卸载成功。

再次以普通用户的身份打开命令提示符,使用“pyinstaller --version”命令查看:

看到了pyinstaller的版本(6.9.0),可知安装成功,并可以正常运行。 

2 使用pyinstaller打包程序

2.1 程序准备 

编写一个python程序,并将其命名为MyApp.py。:

from PyQt5.QtWidgets import QApplication, QWidget, QLabel
import sys

app = QApplication(sys.argv)
window = QWidget()
window.resize(400,300)

label = QLabel('Hello World!')
label.setStyleSheet('color: black; font-size: 40px; font-family: Arial;')
label.setParent(window)

window.show()
sys.exit(app.exec())

2.2 程序打包

打开命令提示符,切换到该python脚本所在的文件夹:

使用命令“pyinstaller MyApp.py”进行打包:

pyinstaller MyApp.py

待运行结束后,在MyApp.py脚本所在的文件夹下,除了MyApp.py脚本文件外,还看到新生成了若干文件和文件夹:

打开dist文件夹,再打开里面的MyApp文件夹,可以看到MyApp.exe文件,这就是生成的exe文件,双击运行后,结果如下:

程序成功运行 ,打包成功。

2.3 打包优化

对于打包生成的exe文件,其在运行过程中,总是先弹出命令行窗口,然后再弹出程序窗口;同时,在生成的文件夹中,包含了较多的dll等支撑文件。

如果不想先弹出命令行窗口,可在命令中加入“-w”选项(“w”要小写):

pyinstaller -w MyApp.py

待运行结束后,双击运行生成的exe文件,发现运行程序时不再弹出命令行窗口。

如果想只生成一个exe文件,而不想要那些支撑文件,可在命令中加入“-F”选项(此时生成的exe文件体积较大):

pyinstaller -w -F MyApp.py

待运行结束后,打开生成的dist文件夹,发现里面只有一个MyApp.exe文件,双击运行后,结果与上述结果相同。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值