python pyinstaller打包常见问题(二):No file找不到文件解决办法

这篇具有很好参考价值的文章主要介绍了python pyinstaller打包常见问题(二):No file找不到文件解决办法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目场景:

我写了python程序,本地环境能正常运行,我打算打包成exe文件

方便发给朋友,让没有python环境也能正常运行

程序调用了wav文件,一个音效资源文件,程序调用的路径如下:

file = "猫咪吃东西.wav"

问题描述:

程序制作完成后,我开始打包

在需要打包的程序的目录上,我进入终端输入以下命令进行打包:

pyinstaller -cF xxx.py --add-data="猫咪吃东西.wav;猫咪吃东西.wav" -n="xxx.exe"

完成打包后,我在dist目录中找到生成的exe

python no file,android,python,windows

运行失败直接闪退,我怀疑是缺少文件导致报错

为了捕捉原因,运行程序添加如下代码:

python no file,android,python,windows

再次重复上述步骤进行打包,运行生成exe文件报错如下:

python no file,android,python,windows


原因分析:

根据上面截图,可以看到exe文件运行失败的原因

是在当前目录上运行程序找不到所需资源wav文件

找不到资源文件导致的报错,一般这种情况有两个原因:

第一:打包的命令有问题,没有将资源文件打包进去

第二:运行程序的读取资源文件有问题,路径问题或者是权限问题(可能性小)


解决方案:

根据上述两个原因,制定两个计划:

第一:再运行一次exe文件,查看生成的临时文件夹有没有资源文件

第二:查看临时目录的资源文件的路径,确认路径与程序读取文件路径对应

一、查看临时文件夹

运行exe后,不关闭运行程序窗口就会出现想要的临时文件夹

window系统运行的程序生成的缓存文件,一般都在临时文件Temp中

而pyinstaller打包生成的临时文件在Temp中文件夹里一般是_ME开头的文件,例如:

python no file,android,python,windows

二、修改打包命令,并打包

根据图片可以发现程序所需资源文件和第三方库的存在

但是路径与与程序读取文件的路径不一样

我们想要的只是wav文件,却多了个目录

了解pyinstaller打包命令后,发现错误原因如下:

附加文件指定的路径,不需要写名称

修改打包命令,终端输入以下命令打包:

pyinstaller -cF xxx.py --add-data="猫咪吃东西.wav;." -n="xxx.exe"

打包生成exe的运行后,依然报错如下:

python no file,android,python,windows

三、修改运行程序调用文件的路径

打包的exe文件读取资源时的路径需要采用绝对路径

在运行程序中我添加了一些输出,具体原因你可以看截图:

python no file,android,python,windows

根据截图你会发现

如果你写的是相对路径,那么程序寻找的资源路径与正确路径不一致

运行exe所在的目录就是工作目录,他会在当前目录寻找资源文件

所以说读取文件路径需要先获取临时工作目录加上资源所在路径

修改运行程序的路径,代码如下:

# 获取目录路径对象
SRC_PATH = Path.absolute(Path(__file__)).parent
# 吃食物声音路径:
path = str(SRC_PATH / "猫咪吃东西.wav")  # 拼接获得文件绝对路径字符串

修改完程序后,终端再次输入命令打包:

pyinstaller -cF xxx.py --add-data="猫咪吃东西.wav;." -n="xxx.exe"

完成打包后,成功运行生成的exe,功能也是完整的

总结

也许朋友pyinstaller打包的exe报错的原因与我不同,但是朋友也可以根据以下步骤寻找答案:

1、首先程序中添加异常报错说明

2、确认是无法找到资源文件导致的报错后,查看临时文件夹

3、查看临时文件夹的资源文件跟运行程序读取文件的路径一致吗

4、确认自己的运行程序读取文件路径是绝对路径(临时工作目录加上资源文件的所在的路径)

5、看看临时工作目录与下列代码获取的值一样吗    

# 获取目录路径对象
SRC_PATH = Path.absolute(Path(__file__)).parent
# 吃食物声音路径:
path = str(SRC_PATH / "猫咪吃东西.wav")  # 拼接获得文件绝对路径字符串

        如果还是解决不了问题的话,可以评论区联系我文章来源地址https://www.toymoban.com/news/detail-835750.html

到了这里,关于python pyinstaller打包常见问题(二):No file找不到文件解决办法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关于Qt程序打包后运行库依赖的常见问题分析及解决方法

    目录 一. 大致如下常见问题: (1)找不到程序所依赖的Qt库 version `Qt_5\\\' not found (required by (2)Could not Load the Qt platform plugin \\\"xcb\\\" in \\\"\\\" even though it was found (3)打包到在不同的linux系统下,或者打包到高版本的相同系统下,运行程序时,直接提示段错误即segmentation fault,或者I

    2023年04月17日
    浏览(41)
  • SuperMap Hi-Fi 3D SDK for Unreal游戏引擎打包常见问题

    目录 前言 常见问题 1. UE打包报错:ERROR: No target name was specified on the command-line. 2. UE打包报错:ERROR: Expecting to find a type to be declared in a module rules named ‘XXX’ 3. UE打包报错:Error: System.ArgumentException: An item with the same key has already been added. Key: PakLoader

    2024年02月03日
    浏览(37)
  • 51.pyinstaller打包后,打开exe程序提示SyntaxError: Non-UTF-8 code starting with '\x90' in file的问题

    问题: 最后开发了一款小工具,然后确定一切测试没有问题,想通过pyinstaller将其打包成exe,像类似的打包以前也经常打包的,复杂一点的也都是打包成功的,但这里感觉程序很简单,打包居然出现了以下错误。 我的python版本是3.8.9,然后pyinstaller版本是5.9.0,不知道会不会是

    2024年02月11日
    浏览(31)
  • 使用pyinstaller打包python文件遇到的问题和解决方法

    情况1 :当所使用的代码都在一个.py文件中,且该代码中没有调用其他文件和import自己写的函数时 例如: 打包下面这个检查输入的ip是否符合规范的程序ipcheck.py,程序中只Import了自带的库re 下载pyinstaller 使用Pyinstaller打包。先进入该程序所在的文件夹,在文件资源管理器的文

    2024年02月06日
    浏览(37)
  • python pyinstaller打包的exe在win7系统无法运行问题解决方法

    目录 一 .问题起因 二.解决方法 注意: pyinstaller打包之前,请先将bulid文件夹和dist文件夹删除,这两个文件夹是pyinstaller打包后自动生成的,删除重新打包可以避免版本干扰 .         近期做了一个溯源码项目(开发工具使用的是pycharm2023.1.3),由于是在windows环境运行,于是采用了pyin

    2024年02月07日
    浏览(49)
  • Python个人常见语法问题

    之前一直是写Java的,来到新公司后,后端语言包括python。 这里对python语法做一些记录,防止以后发生类似的问题 1,python是弱类型的语言,比如给同一个变量赋值不同的类型,是不会报错的:    注意,在项目中不要给同一个变量,前后赋值的类型不一样。 2,python没有使用大

    2023年04月25日
    浏览(19)
  • pyinstaller打包程序后提示No module named ‘xxxx‘

    按照python官方提供的打包命令,我使用了-F 、-D 、–hidden-import=‘xxx’、–add-data等都使用过了,最后无济于事,该报错还是报错了。 首先第一点,先检查你的虚拟环境/全局环境是否有安装pyinstaller,可以在设置-》项目-》python解释器中看到,我这边没安装也能用pyinstaller,可

    2024年02月08日
    浏览(32)
  • 本机使用python操作hdfs搭建及常见问题

    一、虚拟机安装CentOS7并配置共享文件夹 二、CentOS 7 上hadoop伪分布式搭建全流程完整教程 三、本机使用python操作hdfs搭建及常见问题 四、mapreduce搭建 五、mapper-reducer编程搭建 六、hive数据仓库安装 1.打开虚拟机系统,打开hadoop 确保网页可以打开 2.修改本机hosts文件 ifconfig 查看

    2024年01月18日
    浏览(36)
  • pyinstaller 打包后运行 出现 ModuleNotFoundError: No module named ‘xxx‘

    这个问题在网上答案可能很多: 下面给出鄙人的经历和参考: 该问题的核心可能是 没有安装lib造成的 ,那么你可能会问,”我已经安装了呀,并且pycharm运行正常~“ 这里要注意:新版本的pycharm现在都会在开发目录下创建一个 venv的文件夹 , 您安装的lib有可能是在这个ven

    2024年02月13日
    浏览(29)
  • 【Python小工具】解决Python的Pyinstaller将.py文件打包成.exe可执行文件后文件过大的问题

    在文章 【Python小项目】Python的GUI库Tkinter实现随机点名工具或抽奖工具并封装成.exe可执行文件中我们实现了一个python小项目的制作并将其打包成了.exe可执行文件。但是,当我们查看了一下文件大小后,好家伙,一百多行代码打包完竟然有242M。于是,我们静下心来思考,是不

    2024年02月10日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包