使用Pyinstaller来打包自己开发的软件时遇到的几个问题及解决方法。工具主要功能是数据分析,使用机器学习算法完成数据训练和预测功能。主要用到了两个学习库keras和sklearn,所以说在打包时出现的问题无非是sklearn和keras的后端TensorFlow在打包运行过程出错的问题。

  注意:灵活使用Pyinstaller的参数,在首次使用pyinstaller -F xxx.py生成的xxx.exe运行出现错误的时候,可以以debug的模型重新编译,即
pyinstaller -F -D xxx.py来打包,便于调试使用。

  打包完成后会在指定目录下生成文件夹build和dist,还有xxx.spec文件。我们可以在cmd中运行dist中的xxx.exe文件,这样我们能够在cmd窗口中查看错误信息。言归正传,下面是遇到的几种问题。

1、缺少dll、so、其它文件。

  解决方法:既然缺少某个文件,那么我们就告诉他缺少的文件在哪里。

  第一种:我们是以debug的形式打包,即参数中加入的-D。

  在cmd中的错误提示中会显示程序在某个路径下找不到文件,那么我们就在电脑中找到这个文件并放到指定路径下。比如图片显示程序运行错误的原因是找不到VERSION这个文件(ps:这个文件中只是包含了astor这个库的版本信息,当然这个库是干什么用的我也不知道,估计是别的库的依赖吧),那么我就在run文件夹创建了astor这个文件夹,然后把VERSION放进去即可。

  

  第二种:打包不加入debug或者只生成xxx.exe文件时,我们需要把缺少的文件打包到xxx.exe中。

  Pyinstaller打包参数有 --add-data这个参数,我们使用这个参数指定文件的位置以及打包的位置。还是上面的错误,VERSION文件在我的电脑桌面上,即C:\Users\Desktop\VERSION,那么打包时告诉程序文件的位置:

  

pyinstaller -F --add-data="C:\Users\Desktop\VERSION;astor" xxx.py
# --add-data="文件位置;缺失文件位置(注意这里是相对路径,即相对于程序)"

  作者发现:第二种情况打包生成的xxx.exe运行时会在TMP目录下生成一个临时文件,这个临时文件存放着python的一些库文件,如果我们将缺失的数据包成功打包到xxx.exe的话会在这个临时文件相应目录下找到。如下图所示,_MEI42082是运行xxx.exe临时生成文件夹,此时,我们去这个文件夹中目录可以找到astor这个文件了。

  总之缺少什么文件就给他指定位置。

2、缺少模块

  如果出现像上图一样类似的问题即缺少模块的话,通过Pyinstaller命令在打包的时候指定。

pyinstaller -F --hidden-import="numpy.core._dtype_ctypes" xxx.py

pyinstaller打包exe运行失败的更多相关文章

  1. pyinstaller打包exe文件,运行时一闪而过

    pyinstaller打包exe文件出现命令窗口一闪而过 原因:exe运行过程中出错了,解决这些错误就可以了 解决方法: 通过 cd path >> xxx.exe 在命令行中运行exe文 ...

  2. Python: pyinstaller打包exe(含file version信息)

    最近项目上一直都是用Spyder直接运行.py文件的方式来执行每日的自动化程序,每天都要手动去点击Run来执行一次,所以考虑把.py文件直接打包成exe,然后用windows的task schedul ...

  3. pyinstaller 打包exe程序读不到配置文件No such file

    挺久没更新博客的,一来之前是觉得才疏学浅,记录下来的太简单没人看.二来时间上不是很充裕(不是借口,有时间打游戏,没时间总结) 偶然有一次发现同事在搜索解决问题的时候正在看我博客的解决思路,很奇妙的感觉 ...

  4. python pyinstaller 打包exe报错

    今天用python 使用pyinstaller打包exe出现错误 环境pyqt5 + python3.6 在导入pyqt5包之前加上如下代码 import sysimport osif hasattr ...

  5. 利用PyInstaller打包exe文件

    前言 平常我们通过Python写完一些小脚本之后,如果使用不频繁的话,一般会选择在DOS界面直接跑脚本,或者在IDE中运行.但当我们需要频繁使用某些脚本,或者在没有Python环境的机器上也能顺利运行 ...

  6. Pyinstaller 打包exe 报错 "failed to execute script XXX"的一种解决方案

    最近用PyQt5写了一个界面小程序,需要打包成exe给到其他windows上使用,一开始使用python 3.7 64位,用pyinstaller打包exe,在64位机上运行正常. 但是目标电脑是32 ...

  7. Pyinstaller打包exe,丢失图标等问题

    Pyinstaller打包exe,丢失图标等问题 一.原因 exe运行时会解压一个名为'_MEI*'的资源文件夹到电脑的临时目录,程序结束时删除. 程序里使用'\图标.png'这样的路径,exe运行时 ...

  8. VS2017编译项目出现提示al.exe运行失败的解决方法

    VS2013中编译一切正常,用VS2017打开项目,某个类库出现al.exe运行失败的解决方法,事件查看器中这样描述 “C:\Program Files (x86)\Microsoft SDKs\Wi ...

  9. pyinstaller 打包exe可执行文件

    Python打包EXE方法之一 一.安装Pyinstaller 1.安装pywin32 下载安装文件:查找到跟自己适用的python版本及window系统版本匹配的pywin32,下载后安装 使用pi ...

随机推荐

  1. 【noi 2.6_9277】Logs Stacking堆木头(DP)

    题意:给出在最底层的木头的个数,问有多少种堆放木头的方式.要求木头必须互相挨着在一起. 解法:f[i]表示最底层i个木头的堆放木头的方式.注意递推的思想!只需知道上一层堆放0~i-1个(即最底层堆放i ...

  2. Windows环境下Robot Framework 下载及安装流程

    1.安装包下载 注意安装包统一64位或32位 1)python-2.7.16.amd64.msi 2)robotframework-3.0.2.tar.gz 3)robotframework-ride ...

  3. Linux core dump使用

    什么是 core dump? core dump是一个当进程意外终止时包含进程内存内容的文件.当程序崩溃的时候,core dump由kernel触发.core dump可以作为程序崩溃时的事后快照(p ...

  4. Prometheus监控k8s企业级应用

    Prometheus架构图 常见的镜像 pod 备注 kube-state-metric 用来收集K8S基本状态信息的监控代理 node-exporter 专门用来收集K8S运算节点基础信息,需要部署 ...

  5. ElasticSearch 7.x 学习

    目录 ElasticSearch 7.x 一.前言 1.1.正向索引和倒排索引 1.1.1.正向索引 1.1.2.倒排索引 二.安装 三.ES 基本概念 3.1.索引 3.2.文档 3.4.mappi ...

  6. JVM ZeroTLAB 是什么意思呢?

    ZeroTLAB 是 JVM 的一个布尔型 Flag,意思是是否将新创建的 TLAB 内的所有字节归零. 默认:false 举例:-XX:+ZeroTLAB 当分配出来 TLAB 之后,根据 Zero ...

  7. Java之一个整数的二进制中1的个数

    这是今年某公司的面试题: 一般思路是:把整数n转换成二进制字符数组,然后一个一个数: private static int helper1(int i) { char[] chs = Integer. ...

  8. Bootstrap页头

    页头组件能够为 h1 标签增加适当的空间,并且与页面的其他部分形成一定的分隔.它支持 h1 标签内内嵌 small 元素的默认效果,还支持大部分其他组件(需要增加一些额外的样式). <div c ...

  9. JBoss 5.x和6.x 反序列化漏洞(CVE-2017-12149)

    0x01 漏洞简介 该漏洞为 Java反序列化错误类型,存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter过滤器中.该过滤器在没有进行任何安全检查的情况 ...

  10. 关于 TCP 三次握手和四次挥手,满分回答在此

    尽人事,听天命.博主东南大学研究生在读,热爱健身和篮球,正在为两年后的秋招准备中,乐于分享技术相关的所见所得,关注公众号 @ 飞天小牛肉,第一时间获取文章更新,成长的路上我们一起进步 本文已收录于 C ...