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语言的优雅之处
Jul 04 Python
Python使用PyGreSQL操作PostgreSQL数据库教程
Jul 30 Python
在Python3中初学者应会的一些基本的提升效率的小技巧
Mar 31 Python
高效测试用例组织算法pairwise之Python实现方法
Jul 19 Python
Python 3中print函数的使用方法总结
Aug 08 Python
Django中的Signal代码详解
Feb 05 Python
python使用锁访问共享变量实例解析
Feb 08 Python
Python反射和内置方法重写操作详解
Aug 27 Python
python解析含有重复key的json方法
Jan 22 Python
python怎么对数字进行过滤
Jul 05 Python
python中pow函数用法及功能说明
Dec 04 Python
Python实战之实现康威生命游戏
Apr 26 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
超神学院:天使彦公认最美的三个视角,网友:我的天使快下凡吧!
2020/03/02 国漫
PHP 模板高级篇总结
2006/12/21 PHP
用PHP实现Ftp用户的在线管理的代码
2007/03/06 PHP
《PHP编程最快明白》第八讲:php启发和小结
2010/11/01 PHP
php使用CutyCapt实现网页截图保存的方法
2016/10/03 PHP
js控制分页打印、打印分页示例
2014/02/08 Javascript
javascript闭包入门示例
2014/04/30 Javascript
纯javascript模仿微信打飞机小游戏
2015/08/20 Javascript
JS实现带关闭功能的阿里妈妈网站顶部滑出banner工具条代码
2015/09/17 Javascript
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
2016/12/15 Javascript
详解JavaScript时间处理之几个月前或几个月后的指定日期
2016/12/21 Javascript
Google 爬虫如何抓取 JavaScript 的内容
2017/04/07 Javascript
angularjs中的$eval方法详解
2017/04/24 Javascript
JavaScript之Canvas_动力节点Java学院整理
2017/07/04 Javascript
详解动画插件wow.js的使用方法
2017/09/13 Javascript
使用vue-cli+webpack搭建vue开发环境的方法
2017/12/22 Javascript
JavaScript 2018 中即将迎来的新功能
2018/09/21 Javascript
浅谈让你的代码更简短,更整洁,更易读的ES6小技巧
2018/10/25 Javascript
微信小程序生成二维码的示例代码
2019/03/29 Javascript
一次微信小程序内地图的使用实战记录
2019/09/09 Javascript
vue导入.md文件的步骤(markdown转HTML)
2020/12/31 Vue.js
python中 chr unichr ord函数的实例详解
2017/08/06 Python
Python3实现获取图片文字里中文的方法分析
2018/12/13 Python
python实现合并多个list及合并多个django QuerySet的方法示例
2019/06/11 Python
Pandas实现一列数据分隔为两列
2020/05/18 Python
PHP面试题附答案
2015/11/28 面试题
Python文件操作的面试题
2013/06/22 面试题
用Python匹配HTML tag的时候,<.*>和<.*?>有什么区别
2012/11/04 面试题
12岁生日感言
2014/01/21 职场文书
授权委托书格式
2014/07/31 职场文书
四年级小学生评语
2014/12/26 职场文书
2015年法制宣传月活动总结
2015/03/26 职场文书
2015年学习部工作总结范文
2015/03/31 职场文书
公司放假通知怎么写
2015/04/15 职场文书
2016继续教育培训学习心得体会
2016/01/19 职场文书
Python开发工具Pycharm的安装以及使用步骤总结
2021/06/24 Python