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实现的下载网页源码功能示例
Jun 13 Python
Python冲顶大会 快来答题!
Jan 17 Python
python+opencv识别图片中的圆形
Mar 25 Python
python中pika模块问题的深入探究
Oct 13 Python
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法
Sep 06 Python
python实现简易学生信息管理系统
Apr 05 Python
MAC平台基于Python Appium环境搭建过程图解
Aug 13 Python
python 爬取B站原视频的实例代码
Sep 09 Python
Python更改pip镜像源的方法示例
Dec 01 Python
详解Django的MVT设计模式
Apr 29 Python
pandas中对文本类型数据的处理小结
Nov 01 Python
Python几种酷炫的进度条的方式
Apr 11 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(5) 类和对象
2010/02/16 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
我见过最全的个人js加解密功能页面
2007/12/12 Javascript
JavaScript 精粹读书笔记(1,2)
2010/02/07 Javascript
jquery中this的使用说明
2010/09/06 Javascript
cookie的复制与使用记住用户名实现代码
2013/11/04 Javascript
使用JavaScript和CSS实现文本隔行换色的方法
2015/11/04 Javascript
jQuery Dialog 取消右上角删除按钮事件
2016/09/07 Javascript
vue-hook-form使用详解
2017/04/07 Javascript
nodejs个人博客开发第二步 入口文件
2017/04/12 NodeJs
JavaScript实现单击网页任意位置打开新窗口与关闭窗口的方法
2017/09/21 Javascript
使用JS模拟锚点跳转的实例
2018/02/01 Javascript
从Vuex中取出数组赋值给新的数组,新数组push时报错的解决方法
2018/09/18 Javascript
javascript中call()、apply()的区别
2019/03/21 Javascript
JavaScript 空间坐标的使用
2020/08/19 Javascript
JavaScript常用进制转换及位运算实例解析
2020/10/14 Javascript
echarts饼图各个板块之间的空隙如何实现
2020/12/01 Javascript
python中sets模块的用法实例
2014/09/30 Python
Python守护进程用法实例分析
2015/06/04 Python
Python实现合并字典的方法
2015/07/07 Python
分享6个隐藏的python功能
2017/12/07 Python
用TensorFlow实现戴明回归算法的示例
2018/05/02 Python
Python弹出输入框并获取输入值的实例
2019/06/18 Python
python之mock模块基本使用方法详解
2019/06/27 Python
python 控制Asterisk AMI接口外呼电话的例子
2019/08/08 Python
使用python实现男神女神颜值打分系统(推荐)
2019/10/31 Python
Python基于进程池实现多进程过程解析
2020/04/30 Python
Python jieba结巴分词原理及用法解析
2020/11/05 Python
YOOX美国官方网站:全球著名的多品牌时尚网络概念店
2016/09/11 全球购物
既然说Ruby中一切都是对象,那么Ruby中类也是对象吗
2013/01/26 面试题
迟到早退检讨书
2014/02/10 职场文书
暑期研修感言
2014/02/17 职场文书
倡议书格式范文
2014/04/14 职场文书
元宵节寄语大全
2015/02/27 职场文书
css3 实现文字闪烁效果的三种方式示例代码
2021/04/25 HTML / CSS
浅析Python中的套接字编程
2021/06/22 Python