马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
攻略一:
https://fishc.com.cn/thread-189217-1-1.html
攻略二:
https://fishc.com.cn/thread-189464-1-1.html
请注意,攻略一中的源代码在某些特定情况下可能会有 JSONDecError 的问题出现,如需修缮后的代码,请移步以下链接
https://fishc.com.cn/thread-189424-1-1.html
那么接下来就开始教学,如何给 python 文件进行打包操作,使其能够在其他机器上独立运行
这里只介绍 windows 系统的教程, mac 的类似
在开始前,请更新一下 pip
pip install --upgrade pip
如果出现提示输入 '--user',则
pip install --upgrade pip -- user
之后我们需要安装 pyinstaller
pip install pyinstaller
如果觉得很慢的话,可以尝试清华镜像源
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller
确实,b站或者网上有很多的资料有关于如何使用 pyinstaller 的,但是很多坑是不会被提到的
网上有很多的教程会说要使用 powershell运行 pyinstaller,左思右想也没有发现有什么不同
昨日花了大半天的时间,为了调出 powershell,最后发现 vscode 或者 terminal 也能运行
在命令行中前往需要合并的 python 文件的路径,请保证所有的 python 文件均放置在同一个文件夹下
此处请确保已经在当前机器中安装 python 文件运行的必要 第三方库,否则即使打包成功, exe 也必将闪退无法运行
pyinstaller 会自动从本地 python 安装路径导入所需要的 第三方库
如果不需要插入 ico,也就是 exe 的图标,直接在命令行使用
pyinstaller -F py文件1 py文件2 py文件3
例如:
pyinstaller -F main.py
亦或是多个 python 文件的合并
pyinstaller -F main.py func.py tool.py
有几个 python 文件就写几个,建议把主运行文件放在第一位置
如果出现以下提示,表明打包完成
此处需要注意的是,在封包之前,模块文件中如果含有 if __name__ == '__main__': 之类的东西,请一定要去除,否则模块文件将会被视为执行文件,if __name__ == '__main__':中的内容将会被执行
如果需要插入 ico,也就是 exe 的图标,直接在命令行使用
pyinstaller -F -i image.ico py文件1 py文件2 py文件3
image.ico 为 ico的名称
请注意,不要直接修改 png jpeg jpg 后缀为 ico !!!!!!!千万不要!!!!!!否则会出现报错!!!!!!!!!
请自行百度搜索 png 转 ico 在线转换,获得 ico 图标,另外,原 png 文件清晰度和尺寸大小请勿过小,否则可能会获得一坨马赛克
P.s ico 文件请和 python 文件放置在同一个路径下
最终的 exe 文件会出现在 dist 文件夹里,可以单独使用(只需要该 exe 文件即可单独运行,不需要其他任何文件)
那么一定会有人问了,如何才能在 exe 文件里面插入图片
刚刚介绍的是如何插入 ico 图标,并非图片
这里我们先感谢外网的大佬 ArmindoFlores
请在网址开头加上 https://
stackoverflow.com/questions/51264169/pyinstaller-add-folder-with-images-in-exe-file
在上一步中,我们不难发现,多了一个 build 文件夹,dist 文件夹 和 .spec 文件
右键用 notepad 等方式打开 .spec 文件
如下图
按照上图操作
在 python 文件里调用 image 的文件中,添加以下代码
def resource_path(relative_path):
try:
base_path = sys._MEIPASS
except Exception:
base_path = os.path.abspath(".")
return os.path.join(base_path, relative_path)
注意要 import sys 喔
image 调用时,请使用 resource_path('你的 image 文件名称')
例如:
file = resource_path('image.jpeg')
全部做完后,请保存,关闭 .spec 文件
此时再在之前的命令行中运行
pyinstaller spec文件
例如:
pyinstaller main.spec
当看到
时,则为打包成功
完成打包后生成的 exe 文件被放置在 dist 文件中,可以单独使用啦~
再次运行,就会看到可爱的图片了
如果运行 exe 文件时出现闪退,打开手机的录像功能,打开慢动作拍摄,将闪退那一瞬间,exe 文件显示的报错信息录制下来
一般情况下都是第三方库没有成功导入导致的(no module named xxx),请检查当前机器是否已经安装好所需的第三方库 |