1、问题描述

使用pyinstaller -F ***.spec命令打包,打包过程无报错信息,生成可执行文件(.exe),双击运行报错,如下图:

2、查找原因

(1)百度,查看打包文件(build/***/warn-***.txt)

百度后,基本都是两类,一类是打包时未能正确导入一些包,但是这类基本在打包过程就会报错,还有一类就是去找打包生成的一个warn文本。

我找到了该文件,打开研究,也没研究出个所以然,把里面一些感觉像的信息拿出来单独百度,可是也处理不了。

(2)单独排查

因为这个项目之前是可以正常打包的,因此我怀疑会不会是新增的文件存在问题。

我手动回退版本,回到之前可以打包的版本,重新打包,发现一切正常。

然后逐步添加增加的文件,一步步调试,最终定位到了一个文件conf.py

以下是文件源码:

# -*- coding: utf8 -*-
import os
import yamldef _get_yaml():"""解析yaml:return: s  字典"""path = os.path.join(os.path.dirname(__file__) + '/config.yaml')f = open(path, mode='r', encoding='UTF-8')s = yaml.load(f)f.close()return s.decode() if isinstance(s, bytes) else s

这是一个读取yaml配置文件的方法,之前百度直接copy了别人的代码。

结合之前打包的经验,我留意到这里有一个读取文件的方法,我怀疑是文件路径的问题,在打包后,这个路径失效了。

我把路径直接改为相对路径和绝对路径下尝试了,发现在绝对路径下是可以运行的。

可是我打包的时候是要打包config.yaml这个文件的,我不想后面部署时,还要把这个文件单独放到一个指定路径。

我尝试使用打包读取资源的方法来读取这个文件,结果成功了!

3、解决方案

修改如下:

# -*- coding: utf8 -*-
from util import ResourcePath
import yamldef _get_yaml():"""解析yaml:return: s  字典"""f = open(ResourcePath.resource_path('config/config.yaml'), mode='r', encoding='UTF-8')s = yaml.load(f)f.close()return s.decode() if isinstance(s, bytes) else s
关联的ResourcePath.py文件源码如下:
import os
import sysdef resource_path(relative_path):"""定义一个读取相对路径的函数"""if hasattr(sys, "_MEIPASS"):base_path = sys._MEIPASSelse:base_path = os.path.abspath(".")return os.path.join(base_path, relative_path)

此外,打包的文件(.spec)也要修改:

Analysis里的datas参数添加('config','config')

python3 打包后执行报错failed to execute script ***相关推荐

  1. 【解决】MacOS下 Python3.7 使用 pyinstaller 打包后执行报错 Failed to execute script pyi_rth__tkinter...

    Fix tcl/tk libs inclusion in tkinter with Python3.7 under MacOS 使用 Pyinstaller 打包时候报错 3027 ERROR: Tc ...

  2. pyinstaller打包py文件生成的exe报错Failed to execute script

    版权声明:转载请注明作者(独孤尚良dugushangliang)出处:https://blog.csdn.net/dugushangliang/article/details/100761976 时常 ...

  3. pyinstaller打包报错 Failed to execute script ‘xxx‘ due to unhandled exception:input():lost sys.stdin

    pyinstaller打包报错 Failed to execute script 'xxx' due to unhandled exception:input():lost sys.stdin pyi ...

  4. Pyinstaller 打包exe 报错 “failed to execute script XXX“的一种解决方案

    Pyinstaller 打包exe 报错 "failed to execute script XXX"的一种解决方案 参考文章: (1)Pyinstaller 打包exe 报错 & ...

  5. Pyinstaller 打包exe 报错 failed to execute script XXX的一种解决方案

    最近用PyQt5写了一个界面小程序,需要打包成exe给到其他windows上使用,一开始使用python 3.7 64位,用pyinstaller打包exe,在64位机上运行正常. 但是目标电脑是32 ...

  6. Maven打包后运行报错

    Maven打包后运行报错 场景描述 今天在用Maven打包的时候发现打完后的jar包无法正常执行,一开始我以为是依赖问题.结果在摸索中发现有一个技巧可以解决问题. 解决方法 1.先clean 2.然后 ...

  7. python打包后程序报错:PermissionError: [Errno 13] Permission denied

    python打包后程序报错:PermissionError: [Errno 13] Permission denied 用python写了一个小程序,然后打包成exe,测试过了功能是完善的,但突然有一 ...

  8. 更改yum源配置后执行报错[Errno 14] PYCURL ERROR 22 - “The requested URL returned error: 404 Not Found”

    更改yum源配置后执行报错 报错信息入下 //[root@bucktanc6 yum.repos.d]# yum clean all Loaded plugins: fastestmirror Cle ...

  9. maven打包报错Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.6.1:cle

    问题记录: maven打包报错Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.6.1:cle 解决办法: 这个 ...

最新文章

  1. + ,- (加号,减号) 是数字类型吗?(sql server 2000中)
  2. PHP Mysql 网站迁移,Linux+PHP+MySql网站迁移配置
  3. 【数据挖掘】分类任务简介 ( 分类概念 | 分类和预测 | 分类过程 | 训练集 | 测试集 | 数据预处理 | 有监督学习 )
  4. Web前端之移动端课程开发之06.bootstrap
  5. 宝塔更换域名_阿里云如何建站、域名、搭建网站?
  6. 实例1:python
  7. python生成器迭代_二十、深入Python迭代器和生成器
  8. Ubuntu下Hadoop的安装和配置
  9. 算法基础:排序算法:7个常用的衡量指标
  10. 物联网平台类型有哪些
  11. iface eth0 inet dhcp
  12. 有哪些 Java 源代码看了后让你收获很多,代码思维和能力有较大的提升?
  13. linux新建目录自动777权限,什么是777权限?Linux及Windows下如何设置文件夹的权限为777?...
  14. Win7怎么开启或关闭dep数据执行保护
  15. mybatis 一对一、一对多、多对一、多对多
  16. 技术源自洛克希德·马丁,光场XR眼镜FYR解析
  17. 【奥斯卡理财星体系 第五章】丨手把手教你从零开始搭建资产配置
  18. 网络电视(IPTV)系统解决方案
  19. 墨客网java_墨客网-知识拆解+经典定时任务案例 精讲Java定时任务框架Elastic-Job和Quartz...
  20. 华为面试真实经历!群面+技术面最后还有英语面!

热门文章

  1. 基于Acgis从全球.nc数据中提取中国地图并计算地区CO2值
  2. C#同步和异步(四)等待异步调用完成
  3. Arale Base源码分析(含Attribute)
  4. 什么是虚拟主播?虚拟数字人直播,不用出镜,不用露脸的直播方式
  5. 无法解析 maven包的问题
  6. android 蓝牙触控笔,FiftyThree 53 Paper pencil 电容笔蓝牙触控笔 上手试用
  7. 3年半工作经验女程序员,聊聊程序员的薪水、工作内容和发展前景
  8. E900V21E_mv310芯片_RTL8822BSwifi_卡刷固件
  9. 暴跌27%!科通芯城遭沽空机构狙击 被指“横跨十年的世纪骗案”
  10. python获取当前日期_python获取当前的日期和时间