使用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. E - E(最短路解决源点到多点,多点到源点的和(有向图))

    问从1号点到各个点的距离+各个点到1号点之间的距离和的最小值 详解键连接https://www.cnblogs.com/csx-zzh/p/13411588.html In the age of te ...

  2. Codeforces Global Round 7 B. Maximums(逻辑)

    题意: 有数组 an,定义 xi 为 a 的前 i - 1 位的最大值(x0 = 0),定义 bi 为 ai - xi,给出数组 bn,还原数组 an. 思路: 因为 x0 = 0,所以 b0 = a ...

  3. poj3585 Accumulation Degree(树形dp,换根)

    题意: 给你一棵n个顶点的树,有n-1条边,每一条边有一个容量z,表示x点到y点最多能通过z容量的水. 你可以任意选择一个点,然后从这个点倒水,然后水会经过一些边流到叶节点从而流出.问你最多你能倒多少 ...

  4. 国产smartbits版本-minismb测试高恪路由器IP限速

    Minismb测试仪表是复刻smartbits的国产版本,是一款专门用于测试智能路由器,网络交换机的性能和稳定性的软硬件相结合的工具.可以通过此工具测试任何ip网络设备的端口吞吐率,带宽,并发连接数和 ...

  5. 解决M1 MacBook无法使用pip安装Numpy

    问题描述 Python官方已发布支持M1 Apple Silicon的版本,但是在使用pip包管理工具安装一些依赖时发生了错误,这里面就包括在科学计算领域常用的numpy.pandas等.目前可以通过 ...

  6. DQL 数据查询语言

    查询数据(SELECT) # 查询所有数据 - 很危险,数据量过大,容易导致内存溢出而宕机 mysql> select * from student; # 先查询数据总量,然后决定是否可以查询所 ...

  7. K8S(06)web管理方式-dashboard

    K8S的web管理方式-dashboard 目录 K8S的web管理方式-dashboard 1 部署dashboard 1.1 获取dashboard镜像 1.1.1 获取1.8.3版本的dsash ...

  8. C - 可变参函数与可变参宏

    一.可变宏 1.# 可以接收一个参数,并把这个参数按照原来的字符串源码原样传给宏内部: 1 #define RR(x) printf(#x"\n"); 2 int main(){ ...

  9. mybatis(四)缓存机制

    转载:https://www.cnblogs.com/wuzhenzhao/p/11103043.html 缓存是一般的ORM 框架都会提供的功能,目的就是提升查询的效率和减少数据库的压力.跟Hibe ...

  10. 记一次 Billu_b0x渗透

    目录: 0x01 寻找ip 1.这边我们是使用的nmap来寻找我们的靶机IP地址,开始Ip是1,结束是254,153是我kali的ip,所以158就是我们的靶机的ip地址了. 2. 查看端口服务 这边 ...