pyinstaller打包单个exe后无法执行错误的解决方法


Posted in Python onJune 21, 2019

1、执行环境说明

python版本3.7

直接使用pip进行安装pywin32、pyinstaller

pip install pywin32
pip install pyinstaller

2、使用了第三方库的情况

建议在打包之前务必找到第三方库的包,把包复制到到跟myfile.py同目录下,然后再使用以上2种方式打包,否则会打包失败或者即使打包成功,程序也会闪退。pyinstaller -p参数是添加的pyinstaller打包程序时的扫描路径,假设venv\Lib\site-packages是包存放路径,那么也可以使用以下命令打包:

pyinstaller -p venv\Lib\site-packages -F xxx.py

3、failed to execute script 错误

首先使用

pyinstaller -F -w code.py

进行exe打包,得到的单个.exe文件,运行后提示failed to execute script 错误

排错过程:使用pyinstaller -D code.py进行exe打包,得到一个目录文件,通过命令行执行.exe文件提示The 'six' package is required; normally this is bundled with this package错误

说明pyinstaller打包后,需要six等库,最终确认需要在code.py中添加以下库:

import six
import packaging
import packaging.version
import packaging.specifiers
import packaging.requirements

当然,six和packaging库建议使用pip安装。加入以上库后,使用pyinstaller -D code.py打包执行不再出错。

4、找不到数据文件夹

有些程序包含了数据文件夹,不能直接按资源文件方式打包,需要在执行文件所在的文件夹内创建这些数据文件。一般情况下在脚本中我们可以使用os.path.split(os.path.abspath( __file__))来的到code.py的路径,然后拼接得到数据文件夹。但之后使用pyinstaller -F code.py打包成单个exe文件,在未读取数据文件夹的情况下运行正常,一旦打开数据文件,就会闪退,命令行窗口会显示打不开数据文件。因为PyInstaller会创建临时文件夹temp,程序代码在这个临时文件夹中运行,我们可以用以下几个语句来查看正式运行路径:

import sys
  import os
  print(sys.path[0])
  print(sys.argv[0])
  print(os.path.dirname(os.path.realpath(sys.executable)))
  print(os.path.dirname(os.path.realpath(sys.argv[0])))

得到的结果是os.path.dirname(os.path.realpath(sys.executable))和os.path.dirname(os.path.realpath(sys.argv[0]))才是含数据文件夹的路径。因此可以按如下方式取得文件路径,然后根据需要拼接得到数据文件夹的真实路径:

if hasattr(sys, '_MEIPASS'):
  # PyInstaller会创建临时文件夹temp
  # 并把路径存储在_MEIPASS中
    self.appPath = os.path.dirname(os.path.realpath(sys.executable))
  else:
    self.appPath, filename = os.path.split(os.path.abspath( __file__))

修改完成后,分别以以下三种方式打包,运行成功

pyinstaller -D code.py
pyinstaller -F code.py
pyinstaller -w -F code.py

以上这篇pyinstaller打包单个exe后无法执行错误的解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python时间模块datetime、time、calendar的使用方法
Jan 13 Python
详解MySQL数据类型int(M)中M的含义
Nov 20 Python
Python实现读写sqlite3数据库并将统计数据写入Excel的方法示例
Aug 07 Python
python 生成器协程运算实例
Sep 04 Python
对numpy中数组元素的统一赋值实例
Apr 04 Python
使用django的ORM框架按月统计近一年内的数据方法
Jul 18 Python
python生成随机红包的实例写法
Sep 02 Python
Python3.7 读取 mp3 音频文件生成波形图效果
Nov 05 Python
pytorch 计算ConvTranspose1d输出特征大小方式
Jun 23 Python
Python importlib模块重载使用方法详解
Oct 13 Python
Python爬虫实战案例之爬取喜马拉雅音频数据详解
Dec 07 Python
Alpine安装Python3依赖出现的问题及解决方法
Dec 25 Python
pyinstaller打包多个py文件和去除cmd黑框的方法
Jun 21 #Python
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
Jun 21 #Python
十行代码使用Python写一个USB病毒
Jun 21 #Python
Python pandas DataFrame操作的实现代码
Jun 21 #Python
Python pandas.DataFrame调整列顺序及修改index名的方法
Jun 21 #Python
Linux下远程连接Jupyter+pyspark部署教程
Jun 21 #Python
python之当你发现QTimer不能用时的解决方法
Jun 21 #Python
You might like
PHP限制页面只能在微信自带浏览器访问的代码
2014/01/15 PHP
yii2缓存Caching基本用法示例
2016/07/18 PHP
JavaScript 核心参考教程 内置对象
2009/10/13 Javascript
基于jquery的获取mouse坐标插件的实现代码
2010/04/01 Javascript
javascript框架设计读书笔记之种子模块
2014/12/02 Javascript
jQuery中toggleClass()方法用法实例
2015/01/05 Javascript
简单讲解AngularJS的Routing路由的定义与使用
2016/03/05 Javascript
Vue.js 父子组件通讯开发实例
2016/09/06 Javascript
Angular中使用ui router实现系统权限控制及开发遇到问题
2016/09/23 Javascript
js调用父框架函数与弹窗调用父页面函数的简单方法
2016/11/01 Javascript
Vue.extend构造器的详解
2017/07/17 Javascript
JavaScript实现精美个性导航栏筋斗云效果
2017/10/29 Javascript
基于vue 添加axios组件,解决post传参数为null的问题
2018/03/05 Javascript
webpack源码之loader机制详解
2018/04/06 Javascript
js限制输入框只能输入数字(onkeyup触发)
2018/09/28 Javascript
C#程序员入门学习微信小程序的笔记
2019/03/05 Javascript
Python的迭代器和生成器
2015/07/29 Python
Python字符串特性及常用字符串方法的简单笔记
2016/01/04 Python
python开发之list操作实例分析
2016/02/22 Python
基于python爬虫数据处理(详解)
2017/06/10 Python
用tensorflow搭建CNN的方法
2018/03/05 Python
Python爬虫小技巧之伪造随机的User-Agent
2018/09/13 Python
Python编程中flask的简介与简单使用
2018/12/28 Python
python3.6数独问题的解决
2019/01/21 Python
Python网络爬虫信息提取mooc代码实例
2020/03/06 Python
Pycharm2020.1安装中文语言插件的详细教程(不需要汉化)
2020/08/07 Python
python 利用openpyxl读取Excel表格中指定的行或列教程
2021/02/06 Python
移动端Web页面的CSS3 flex布局快速上手指南
2016/05/31 HTML / CSS
BONIA波尼亚新加坡官网:皮革手袋,鞋类和配件
2016/08/25 全球购物
iHerb俄罗斯:维生素、补品和天然产品
2020/07/09 全球购物
重写子类方法时,抛出异常的书写注意事项
2015/10/17 面试题
党风廉政建设责任书
2014/04/14 职场文书
蛋糕店创业计划书
2014/05/06 职场文书
金陵十三钗观后感
2015/06/04 职场文书
就业推荐表院系意见
2015/06/05 职场文书
如何用JS实现网页瀑布流布局
2021/04/24 Javascript