pyinstaller打包exe运行失败
使用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运行失败的更多相关文章
- pyinstaller打包exe文件,运行时一闪而过
pyinstaller打包exe文件出现命令窗口一闪而过 原因:exe运行过程中出错了,解决这些错误就可以了 解决方法: 通过 cd path >> xxx.exe 在命令行中运行exe文 ...
- Python: pyinstaller打包exe(含file version信息)
最近项目上一直都是用Spyder直接运行.py文件的方式来执行每日的自动化程序,每天都要手动去点击Run来执行一次,所以考虑把.py文件直接打包成exe,然后用windows的task schedul ...
- pyinstaller 打包exe程序读不到配置文件No such file
挺久没更新博客的,一来之前是觉得才疏学浅,记录下来的太简单没人看.二来时间上不是很充裕(不是借口,有时间打游戏,没时间总结) 偶然有一次发现同事在搜索解决问题的时候正在看我博客的解决思路,很奇妙的感觉 ...
- python pyinstaller 打包exe报错
今天用python 使用pyinstaller打包exe出现错误 环境pyqt5 + python3.6 在导入pyqt5包之前加上如下代码 import sysimport osif hasattr ...
- 利用PyInstaller打包exe文件
前言 平常我们通过Python写完一些小脚本之后,如果使用不频繁的话,一般会选择在DOS界面直接跑脚本,或者在IDE中运行.但当我们需要频繁使用某些脚本,或者在没有Python环境的机器上也能顺利运行 ...
- Pyinstaller 打包exe 报错 "failed to execute script XXX"的一种解决方案
最近用PyQt5写了一个界面小程序,需要打包成exe给到其他windows上使用,一开始使用python 3.7 64位,用pyinstaller打包exe,在64位机上运行正常. 但是目标电脑是32 ...
- Pyinstaller打包exe,丢失图标等问题
Pyinstaller打包exe,丢失图标等问题 一.原因 exe运行时会解压一个名为'_MEI*'的资源文件夹到电脑的临时目录,程序结束时删除. 程序里使用'\图标.png'这样的路径,exe运行时 ...
- VS2017编译项目出现提示al.exe运行失败的解决方法
VS2013中编译一切正常,用VS2017打开项目,某个类库出现al.exe运行失败的解决方法,事件查看器中这样描述 “C:\Program Files (x86)\Microsoft SDKs\Wi ...
- pyinstaller 打包exe可执行文件
Python打包EXE方法之一 一.安装Pyinstaller 1.安装pywin32 下载安装文件:查找到跟自己适用的python版本及window系统版本匹配的pywin32,下载后安装 使用pi ...
随机推荐
- Codeforces Round #626 Div2 D. Present(位掩码,二分)
题目链接:https://codeforces.com/contest/1323/problem/D 题意:给了大小为4e5的数组a,其中1<=ai<=1e7.求所有点对和的异或和,即: ...
- Codeforces Round #622 (Div. 2) C2. Skyscrapers (hard version)(单调栈,递推)
Codeforces Round #622 (Div. 2) C2. Skyscrapers (hard version) 题意: 你是一名建筑工程师,现给出 n 幢建筑的预计建设高度,你想建成峰状, ...
- Codeforces Round #613 (Div. 2) B. Just Eat It!(前缀和)
题意: 一个长为n的序列,是否存在与原序列不同的连续子序列,其元素之和大于等于原序列. 思路: 从前.后分别累加,若出现非正和,除此累加序列外的子序列元素之和一定大于等于原序列. #include & ...
- Bézout恒等式
写在前面: 记录了个人的学习过程,同时方便复习 整理自网络 非原创部分会标明出处 目录 结论 证明 拓展 n个整数间 拓展欧几里得算法 拓展欧几里得算法的多解 结论 (Bézout / 裴蜀 / 贝祖 ...
- OpenStack服务默认端口号
在某些部署中,例如已设置限制性防火墙的部署,您可能需要手动配置防火墙以允许OpenStack服务流量. 要手动配置防火墙,您必须允许通过每个OpenStack服务使用的端口的流量.下表列出了每个Ope ...
- 最新 Steam 免费游戏
最新 Steam 免费游戏 免费 免费游戏 免费开玩 免费游戏玩的游戏是有内购的. 免费开玩游戏开玩是一部分免费,玩到某个地方要购买才能继续玩. 免费就是永久免费并且无内购. refs https:/ ...
- ORM All In One
ORM All In One ORM Object Relational Mapping https://en.wikipedia.org/wiki/Object-relational_mapping ...
- how to config custom process.env in node.js
how to config custom process.env in node.js process.env APP_ENV NODE_ENV https://nodejs.org/api/proc ...
- Flutter for web
Flutter for web https://flutter.dev/web https://github.com/flutter/flutter_web Dart https://github.c ...
- CSS Shapes
CSS Shapes shape-outside & shape-image-threshold <img class="element" src="ima ...