pyinstaller打包出错记录
创始人
2024-01-16 21:22:36
0

稍微记录一下最近在liunx上pyinstaller打包出错

目录

  • 稍微记录一下最近在liunx上pyinstaller打包出错
    • 1 号坑 Python3.7.0安装
    • 2号坑 成功打包但是执行失败
  • 小结

后面代码的环境是在Windows子系统下的Ubuntu 20.04下进行的。vscode可以通过,配置WSL来进入环境(如下图)。

在这里插入图片描述

最近有一个需求是要把一个系统部署到某公司服务器上去。要部署的两台服务器分别是Centos、Ubuntu的,里面就是有一些模型使用python写的嘛。模型的调用是通过java的后端项目触发的,这个模型的python环境不好搞,所以要打包成liunx下的可执行文件。本来想着用wine直接也可以触发exe的但是实际上发现还是挺麻烦的,不是很适配总是出现…not found。

我拿到的模型,用的tensorflow的版本是1点几的是比较老的。先来看一下大致用到的哪些包和对应的版本,(注意其中的numpy的版本也不能太高)

image-20221024141520006

为了适应这个tensorflow的版本,需要的python版本不能大于3.8,我自己测试的话3.8的是不行的,3.7和3.6是ok的。然后这个需要对应的pyinstaller的版本是3.4的,版本不对应也会出错。

1 号坑 Python3.7.0安装

安装步骤直接参照这篇 https://blog.csdn.net/zckui/article/details/89821101 步骤还是挺详细的,不过坑也在其中。(这里要注意的是,里面说的创建软连接的时候不要直接修改liunx自带的最好自己创建一个)

关键在那篇博客中的第五步

image-20221024142527124

这里只指定了python编译安装的路径,没有指定别的。本以为是没是的,然后每次执行pyisntaller ...打包的时候到下图所示时
在这里插入图片描述

的时候就报错

在这里插入图片描述

报错的意思差不多是说,自己下的python没有直接跟系统上自带的一些os链接在一起(跟自带的这些so文件版本不匹配)。

这个时候可以依次参考下面两篇博客:

  • 博客1

    这篇的话是针对我们编译时指定的参数的,跟前面的报错信息提示一样,博客中加的参数如下图

在这里插入图片描述

个人建议是

./configure --prefix= $pythonDownloadLocation --enable-shared --enable-ssl   ## 记得要一次性输完,刚开始以为这个直接改里面配置信息的,分#两次输入就不能解决问题

然后再make && make install

  • 博客2

    经过上一步之后,我们就可以在python安装的路径里面找到缺少的那几个文件,然后根据博客2都添加到系统的lib里面去

    在这里插入图片描述

2号坑 成功打包但是执行失败

跨过一号坑后,我们可以成功打包的流程:

Building EXE from EXE-00.toc completed successfully.

看到这个是非常激动的,但是当执行的时候又出了点问题。

astor 报错

错误信息

FileNotFoundError: [Errno 2] No such file or directory: '/tmp/_MEIu22u7n/astor/VERSION'

image-20221024144948056

看了网上别人的一些解决方案和分析。这个其实是astor包里面的问题。

可以按照我下图的标注解决

image-20221024145314439

新增的这个__version__等于多少应该问题不大,保险的话,可以在修改前通过pip list看看这个astor是什么版本的。

编辑之后保存修改,并且重新执行pyisntaller的打包命令。

tensorflow 包中报错

然后出现了tensorflow包里面的报错:

tensorflow.python.framework.errors_impl.NotFoundError: /tmp/_MEIOH1ebc/tensorflow/contrib/bigtable/python/ops/_bigtable.so: cannot open shared object file: No such file or directory

这个其实是,跟前面报错的原因是类似的。应该是包里面引用某个文件的时候用错了路径,pyinstaller在打包的时候会有一个虚拟路径,一般有/tmp ....里面的东西找不到的都是这个问题。然后可以跟着下面这篇文章解决这个问题 文章。

主要参考的回答:

在这里插入图片描述

翻译一下文章中的解决方案,一是要找到所有类似的.so文件,可以通过以下代码进行查看:

import ostsLocation = "/usr/local/python3.7/lib/python3.7/site-packages/tensorflow"tensorflow_binaries = []for dir_name, sub_dir_list, fileList in os.walk(tsLocation): for file in fileList:if file.endswith(".so"):full_file = dir_name + '/' + fileprint(full_file)tensorflow_binaries.append((full_file, '.'))print(*tensorflow_binaries)

输出大致如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MScUFoN0-1666597606845)(https://raw.githubusercontent.com/yuyuyu258963/pic-go-picStore/main/image-20221024152038101.png)]

可以把这些文件路径添加到对应的.spec文件中

image-20221024152154712

添加路径的注意和技巧:

  • 注意添加的格式 ("$path", ".")
  • 注意前面的 /usr/local/python3.7这段路径要换成自己python所在的路径
  • 技巧 可以同vscode上快捷编辑的方式,把前面代码中的输出复制进去然后按住鼠标滚动轮子,选中多行同时进行编辑。

下面我们去修改 tensorflow包中导入这些文件的代码

image-20221024152935124

根据上图的标注,然后修改保存。

然后执行pyinstaller ××××.spec去打包文件。

到这里这个问题应该就解决了,

继续尝试运行打包后的可执行文件,结果出现了:

ModuleNotFoundError: No module named 'sklearn.utils._typedefs'

这个与前面的错误原因不太一样,下面给出一种简单的解决方法。在.spec文件中的hiddenimports中添加缺少的module.

在这里插入图片描述

添加后直接执行pyinstaller ./×××.spec重新执行打包。

小结

之前就打包过多次python,除了系统缺少dll文件外的大部分报错都在这次任务中碰到了。现在想来想学学虚拟环境技术还是很必要的,后面还得学一下docker这样在后面部署的过程中也不必大费周折了。

相关内容

热门资讯

高三百日誓师讲话稿 高三百日誓师讲话稿(精选22篇)  在当下社会,我们可以使用讲话稿的机会越来越多,讲话稿可以按照用途...
爱读书国旗下讲话稿 爱读书国旗下讲话稿范文(精选4篇)  在社会发展不断提速的今天,越来越多人会去使用讲话稿,讲话稿是指...
《母亲节的礼物》说课稿 《母亲节的礼物》说课稿范文  作为一名人民教师,常常要写一份优秀的说课稿,编写说课稿是提高业务素质的...
跳绳加油稿 跳绳加油稿  导语:加油稿可以激励运动健儿更好的参加运动,活跃运动的气氛。接下来小编整理了跳绳加油稿...
老师评课稿 老师评课稿(精选15篇)  所谓评课,是指对课堂教学成败得失及其原因做中肯的分析和评估,并且能够从教...
加油稿运动会   加油稿运动会(一)  微微的风,远远的地方吹来一阵微风,夹着轻轻的私语。侧耳仔细听,那是同学们的...
教师节团建活动的主持稿 2022年教师节团建活动的主持稿(精选5篇)  在发展不断提速的社会中,我们都可能会用到主持稿,主持...
《真理诞生于一百个问号之后》... 《真理诞生于一百个问号之后》说课稿范文(精选3篇)  在教学工作者实际的教学活动中,总不可避免地需要...
初三家长会优秀发言稿 初三家长会优秀发言稿范文(精选6篇)  随着社会一步步向前发展,我们可以使用发言稿的机会越来越多,发...
环保的主题征文稿 关于环保的主题征文稿  保护地球,是我们每一个人的责任,以下YJBYS小编为大家提供关于环保的主题征...
家长会学生发言稿 关于家长会学生发言稿(通用7篇)  在当下社会,用到发言稿的地方越来越多,发言稿可以帮助发言者更好的...
校运会加油稿 校运会加油稿精选10篇  在学习、工作生活中,需要使用加油稿的情境愈发增多,加油稿是一种对他人有正向...
幼儿园大班毕业典礼文艺演出主... 最新幼儿园大班毕业典礼文艺演出主持稿(精选3篇)  不经意间,我们毕业的日子就要到来,毕业典礼是我们...
结业典礼讲话稿 结业典礼讲话稿(精选21篇)  在日新月异的现代社会中,我们用到讲话稿的地方越来越多,讲话稿是领导人...
五年级家长会班主任发言稿 五年级家长会班主任发言稿(通用8篇)  家长会一般是由学校或教师发起的,面向学生、学生家长,以及教师...
小学班主任工作经验交流发言稿    [小学班主任工作经验交流会发言稿]  尊敬的各位领导,老师、亲爱的同学们:  大家好!  今天...
小学生中队委竞选稿 小学生中队委竞选稿(精选3篇)  在人们越来越重视自我提升的今天,接触并使用竞选稿的人越来越多,竞选...
通讯稿格式及 通讯稿格式及范文  电子稿:标题 黑体2号加粗,正文 宋体小四,行距1.5  1.通讯稿格式(300...
论文答辩稿是什么   毕业论文答辩以后,答辩委员会要根据毕业论文以及作者的答辩情况,评定论文成绩。在此,小编为大家准备...
退休人员在座谈会上的发言稿 退休人员在座谈会上的发言稿(通用10篇)  在发展不断提速的社会中,我们使用上发言稿的情况与日俱增,...