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程序中操作文件之flush()方法的使用教程
May 24 Python
Python爬虫包BeautifulSoup异常处理(二)
Jun 17 Python
Django重置migrations文件的方法步骤
May 01 Python
python实现图片九宫格分割
Mar 07 Python
python hashlib加密实现代码
Oct 17 Python
python实现简单银行管理系统
Oct 25 Python
Django 创建后台,配置sqlite3教程
Nov 18 Python
使用python绘制cdf的多种实现方法
Feb 25 Python
Python对称的二叉树多种思路实现方法
Feb 28 Python
使用keras实现孪生网络中的权值共享教程
Jun 11 Python
python爬虫使用requests发送post请求示例详解
Aug 05 Python
微软开源最强Python自动化神器Playwright(不用写一行代码)
Jan 05 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开发工具
2015/11/09 PHP
Zend Framework分页类用法详解
2016/03/22 PHP
PHP基本语法实例总结
2016/09/09 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
2019/11/23 PHP
php的lavarel框架中join和orWhere的用法
2020/12/28 PHP
Dojo之路:如何利用Dojo实现Drag and Drop效果
2007/04/10 Javascript
url 特殊字符 传递参数解决方法
2010/01/01 Javascript
JavaScript中this关键词的使用技巧、工作原理以及注意事项
2014/05/20 Javascript
JavaScript模拟深蓝vs卡斯帕罗夫的国际象棋对局示例
2015/04/22 Javascript
基于jQuery通过jQuery.form.js插件实现异步上传
2015/12/13 Javascript
jQuery实现带遮罩层效果的blockUI弹出层示例【附demo源码下载】
2016/09/14 Javascript
微信js-sdk预览图片接口及从拍照或手机相册中选图接口用法示例
2016/10/13 Javascript
JS实现图片高斯模糊切换效果的焦点图实例
2017/01/21 Javascript
基于AngularJS的拖拽文件上传的实例代码
2017/07/15 Javascript
vue语法之拼接字符串的示例代码
2017/10/25 Javascript
浅谈vue中.vue文件解析流程
2018/04/24 Javascript
详解Vue中watch的高级用法
2018/05/02 Javascript
用WebStorm进行Angularjs 2开发(环境篇:Windows 10,Angular-cli方式)
2018/12/05 Javascript
浅谈一个webpack构建速度优化误区
2019/06/24 Javascript
如何阻止小程序遮罩层下方图层滚动
2019/09/05 Javascript
Nuxt的路由配置和参数传递方式
2020/11/06 Javascript
vue打开其他项目页面并传入数据详解
2020/11/25 Vue.js
[47:53]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#2COL VS Spirit
2016/03/02 DOTA
简要讲解Python编程中线程的创建与锁的使用
2016/02/28 Python
Python实现按照指定要求逆序输出一个数字的方法
2018/04/19 Python
python调试神器PySnooper的使用
2019/07/03 Python
Django之模板层的实现代码
2019/09/09 Python
前后端结合实现amazeUI分页效果
2020/08/21 HTML / CSS
浅析HTML5 Landmark
2020/09/11 HTML / CSS
世界首屈一指的钓鱼用品商店:TackleDirect
2016/07/26 全球购物
计算机专业自我鉴定
2013/10/15 职场文书
迟到检讨书1000字
2014/01/15 职场文书
小区文明倡议书
2014/05/16 职场文书
Html5新增了哪些功能
2021/04/16 HTML / CSS
JS实现扫雷项目总结
2021/05/19 Javascript
html中相对位置与绝对位置的具体使用
2022/05/15 HTML / CSS