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

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

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

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

相对路径:

"./xxx/xxxx/xxx.xxx"

相对路径都在工程文件夹内寻址,不涉及外部路径。但是打包成.exe时报错如下:
在这里插入图片描述
相对路径无法找到,但是绝对路径写在程序里的话,就不便于移植。
最后在网上找到了方法,主要参考如下:
链接: 冻结路径.
大致方法与其相同,可以先就按照他的方法生成两个文件,试试是否能运行,是否缺库。
他的代码可运行后其实只要在工程里加一个frozen_dir.py文件

import sys
import os
 
def app_path():
    """Returns the base application path."""
    if hasattr(sys, 'frozen'):
        # Handles PyInstaller
        return 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的同一路径下:
在这里插入图片描述
随后,点击运行,运行成功。

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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值