使用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. [NC13331]城市网络

    传送门 题意: 思路: 对于每组查询,我们直接从$u$往上搜到$v$,复杂度$O(nq)$,显然不可取(不过这题开始的数据很弱,暴力就过了) #include<bits/stdc++.h> ...

  2. Cell 动态行高文字显示不全问题探索

    目录 问题概述 一.新建工程 二.尝试复现问题 尝试解决 修改contentLblBtmCon优先级为High(750) 修改contentLblBtmCon优先级为Low(250) 小结 其他解决思 ...

  3. Java15 运行Hello,world竟然不用javac?

    喜欢尝鲜的我,装好了Java15,如下编写了一个输出语句:hello,world. 当我打开cmd准备运行的时候,惊呆了! 以前java8的时候不都是这样操作的吗?最初以为环境配置问题,可以即便在系统 ...

  4. 浅谈Webpack模块打包工具二

    Webpack插件机制介绍 Loader专注实现资源模块加载,plugin解决其他自动化工作,比如清除dist目录,拷贝静态文件值输出目录,压缩输出代码等,下面列举几个plugin 的例子. Webp ...

  5. LSTM - 长短期记忆网络

    循环神经网络(RNN) 人们不是每一秒都从头开始思考,就像你阅读本文时,不会从头去重新学习一个文字,人类的思维是有持续性的.传统的卷积神经网络没有记忆,不能解决这一个问题,循环神经网络(Recurre ...

  6. TCP Wrappers原理及简单实验

    1.TCP Wrappers(简易防火墙)简介TCP_Wrappers是一个工作在第四层(传输层)的的安全工具,对有状态连接(TCP)的特定服务进行安全检测并实现访问控制,界定方式是凡是调用libwr ...

  7. C- c常见问题分析

    一.遇到undefined symbol怎么办: (1)首先解析未定义符号是什么:[利用c++filt命令] c++filt _ZN4Json5ValueixERKNSt7__cxx1112basic ...

  8. java中的装箱及拆箱

    java中存在8中基本的数据类型,每一种数据类型都有包装类型. 包装类型:每一个基本的数据类型都会------对应一个包装类型. boolean------------------>Boolea ...

  9. ASP.NET Core 中间件(Middleware)(一)

    本文主要目标:记录Middleware的运行原理流程,并绘制流程图. 目录结构: 1.运行环境 2.Demo实践 3.源码追踪 4.AspnetCore内置middleware 一.运行环境 Visu ...

  10. C#通过NI-VISA操作Tektronix TBS 2000B系列示波器

    一.概述 本文描述采用C#语言访问控制Tektronix TBS 2000B 系列示波器.接口协议采用NI-VISA. 最近一个项目需要和一款示波器进行通信,需要对示波器进行一些简单控制并获取到波形数 ...