Pyinstaller打包方法

目录

简介

步骤

一、生成.spec文件

二、在.spec文件里手动添加其余文件信息

一些可能的疑惑和注意事项


简介

我的使用场景是打包PyQt做好的上位机界面,我的文件结构如下:

其中,fun文件夹里面全是一些.py文件,封装一些类和方法;images文件夹里面是我的程序用到的图片;personnal_data文件夹里面包括两个子文件夹,两个子文件夹里面存入不同类型的数据,如.csv、.npy等。

注意本文提到的文件夹是文件夹,文件是文件,需着重区分。

步骤

打包具体步骤如下:

一、生成.spec文件

在pycharm终端,cd到pro1文件夹下,运行

pyi-makespec -w main.py

其中,main.py就是加载主程序的那个py文件,需要替换成你的。

这样就生成了一个main.spec文件,大概长这样

二、在.spec文件里手动添加其余文件信息

仔细看.spec文件,主要是修改这两个位置

规则:把散落在外的.py文件添加到'main.py下面';把文件夹及其余散落在外的文件添加到binaries后面,注意格式为('文件夹名','文件夹名')或('文件名','.')。写 '文件夹名' 还是写 '.' 后面会有解释。

添加好后,接着在终端(还是cd pro1以后那里)运行

pyinstaller main.spec

运行之后会生成build文件夹和dist文件夹。build是exe编译过程中产生的文件夹,没用;我们最终的文件在dist文件夹下。如图

运行main.exe即可。

一些可能的疑惑和注意事项

1、images.qrc和mainwindow.ui是pyqt5用于将图片和界面编译成.py文件,只是为了方便设计,编译后真正用到的是images_rc.py和mainwindow.py,所以这两个不需要放在binaries里面。

2、手动添加信息后再打包,其实就相当于在_internal文件夹下导入了上述binaries添加的那些东西(还有一个Config.ini文件,截图放不下了)

3、关于('文件夹名','文件夹名')和('文件名','.')

如果后面用了'文件夹名',则会导出完整的文件夹,如上图所示。如果后面用了'.',则会导出文件夹里面的内容,不包括文件夹本身。如果('personal_data','.'),personal_data下有left和right两个子文件夹,则在_internal里只会有left和right及里面的文件,而没有personal_data;如果('Config.ini','Config.ini'),则在_internal里会生成一个Config.ini文件夹,里面包括Config.ini文件。

4、路径问题

这一点很重要,如果说你之前的路径是这样的

那么务必要通过os模块更改为绝对路径(可自己打印路径调试),如下图

总之务必确保你自己导入的模块路径打包后能够被找到。

可以在命令提示窗口(小黑窗),把main.exe拖入,回车运行,可以类似编译器打印出错误。

  • 22
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

learninger_lt7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值