pyinstaller打包py文件

windows平台打包

流程

如果需要打包的文件中包含所需的相关资源文件,譬如在将pyqt界面打包时,我们会设置一些默认的图片,这些都属于资源文件。那么尽量下面的步骤来进行,先进行测试解决可能遇到的bug,再最终进行发布。

测试阶段

  1. 首先选择干净的python的环境,不能是conda环境,可直接下载对应版本的python.exe安装到电脑
  2. 接着在干净的python环境中配置运行该py文件所需的各种包,像tensorflow、torch等
  3. 然后采用pyinstaller xxx.py -F命令对该py文件进行打包,打包生成build、dist文件夹和spec文件。其中build文件夹里面的内容不需要我们去管,查看dist文件夹下面存在一个打包完成的exe文件。
  4. 接着需要将exe文件移动到与该py文件同级的目录下
  5. 然后采用cmd控制台运行该exe文件,根据相关的报错情况,解决错误
  6. 解决完错误后,如果不想采用控制台运行该exe文件,则需要重新进行打包。重新打包前首先需要将build、dist文件夹进行删除
  7. 接着编辑.spec文件,具体的spec打开后是下面的亚子
    spec文件概览
  8. 接着我们需要编辑datas这个目录下面的内容,注意编辑形式是元组的形式,就是一个()括号里面包含你想要打包的资源文件的目录,像我需要同时打包images文件夹下的资源文件,那么我就在datas里面写入(‘images’,‘images’)
  9. 编辑好spec文件后,为了能够在运行exe文件的时候访问到这个文件夹下面的资源,我们需要再次编辑下相关的代码,具体如下:
    def source_path(self,relative_path):
        if getattr(sys, 'frozen', False):
            base_path = sys._MEIPASS
        else:
            base_path = os.path.abspath(".")
        return os.path.join(base_path, relative_path)
//在类里面加入这么一个函数,用来访问资源文件中的路径
  1. 在代码中加入上述的函数后,在你原来调用这个资源文件的代码位置再进行修改,例如
//修改前
self.background_path= './images/icon/placeholder.png'
//修改后
self.background_path = os.path.join(self.source_path('images'),'icon/placeholder.png')
//更改为这种形式进行调用就可以啦
  1. 上述的操作全部完成后,就可以进行重新打包了

发布阶段

  1. 接上面的第十一步,重新进行打包,在干净的python环境下运行命令pyinstaller xxx.spec -F
  2. 上述命令是打包成一个exe文件,具体你想要要打包成什么形式(一个exe采用-F,一个目录采用-D)
  3. 注意在打包过程中,打包的文件不能超过2G,不然会报一些乱七八糟的错误(这个报错的类型各种都有,可以在pyinstaller的github中的issues下看好多人遇到这个问题),所以如果你是有预训练模型的话,尽量采用测试阶段的做法,修改相应的代码,然后运行exe文件后,将相应的预训练模型放置到相应的目录下面就可以直接访问了,windows下在C:\用户\xxx\AppData\Temp\Local目录下,运行exe文件后,看你这个exe文件具体在哪个缓存文件夹下,你直接将预训练模型放过去就可以了

linux平台打包

流程

  1. 流程也是分为测试阶段和发布阶段,具体的操作方法其实和windows的操作流程一模一样,不过最后打包形成的不是exe文件,这个应该大家都知道。运行可执行文件的方法就是直接./dist/xxx就可以了
  2. 同样的,打包的文件不能超过2G,不然会报乱七八糟的错,譬如
    struct.error: ‘i’ format requires -2147483648 <= number <= 2147483647
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值