欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

python打包成.exe文件时出现“系统找不到指定路径”

发布时间:2023/12/20 38 豆豆
生活随笔 收集整理的这篇文章主要介绍了 python打包成.exe文件时出现“系统找不到指定路径” 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

python打包成.exe文件时出现“系统找不到指定路径”

我在一开始写工程时就想到最后打包的时候可能会出现文件位置会发生移动,所以并没有使用绝对路径,而都是以相对路径写的程序。
绝对路径:

"E:xxx/xxx/xxxx/xxx.xxx"

相对路径:

"./xxx/xxxx/xxx.xxx"

相对路径都在工程文件夹内寻址,不涉及外部路径。但是打包成.exe时报错如下:

相对路径无法找到,但是绝对路径写在程序里的话,就不便于移植。
最后在网上找到了方法,主要参考如下:
链接: 冻结路径.
大致方法与其相同,可以先就按照他的方法生成两个文件,试试是否能运行,是否缺库。
他的代码可运行后其实只要在工程里加一个frozen_dir.py文件

import sys import osdef app_path():"""Returns the base application path."""if hasattr(sys, 'frozen'):# Handles PyInstallerreturn os.path.dirname(sys.executable) #使用pyinstaller打包后的exe目录return os.path.dirname(__file__) #没打包前的py目录

然后在需要输入地址的文件里import frozen_dir就行,原地址如下:

train_weights_300_max = r"\faster_rcnn\save_weights\300_max_save_weight\20210924\300_max_resNetFpn-model-18.pth" 然后把原来直接用train_weights_300_max的地方换成frozen_dir.app_path()+train_weights_300_max。 可以先print(frozen_dir.app_path()+train_weights_300_max)看看是否为绝对路径。

这样,你文件里写的是相对路径,生成exe后程序会自动读取exe文件所在路径与你的相对路径相组合,生成绝对路径供程序使用。
这就会出现一个问题,之前说过,生成的是工程里的dist/程序名/程序名.exe,它运行时就会出现组合的路径为E:xxx/xxx/xxx/dist/程序名/+相对路径,但实际路径应该为E:xxx/xxx/xxx/+相对路径。
所以要么把exe移到dist文件外面,要么把所使用的文件移到dist/程序名/程序名.exe路径下。我试了两种方法。
前者失败了。此操作后exe打开就闪退。后者可行,如图我将除dist和.idea的文件全部移到了和exe的同一路径下:

随后,点击运行,运行成功。

主要参考如下:
链接: 冻结路径.

总结

以上是生活随笔为你收集整理的python打包成.exe文件时出现“系统找不到指定路径”的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。