使用pyinstaller打包程序遇到的路径问题(已解决)

问题描述:

我在pycharm中使用pyinstaller打包应用程序后,在自己电脑上能够正常运行,但是在将程序转移到其他电脑后就会提示找不到某个文件,排除后发现问题出在如下代码中

weights_path=r"D:\GraduatePrograms\MaskRCNN\mask_rcnn\logs\mix1463_train_2\weights\best_model.pth"
label_json_path = r"D:\GraduatePrograms\Generate_dataset\datasets\mix1463\mix1463.json"

这两个文件路径是使用硬编码的,即使在打包后,路径也是原来电脑的路径。所以转移后会找不到文件。

解决方案:

使用如下代码,动态获取路径

def resource_path(relative_path):
    """获取资源文件路径"""
    if hasattr(sys, '_MEIPASS'):  # 检查是否在 PyInstaller 打包环境中
        base_path = sys._MEIPASS
    else:
        base_path = os.path.abspath(".")
    return os.path.join(base_path, relative_path)

原路径修改如下

 weights_path = resource_path('best_model.pth')
 label_json_path = resource_path('mix1463.json')

注:由于在.spec中不能返回上层路径,所以我直接把这俩文件移到与当前脚本并列的位置了

在.spec文件中datas增加如下导入

    ('D:\\GraduatePrograms\\MaskRCNN\\mask_rcnn\\logs\\mix1463_train_2\\weights\\best_model.pth',
         '.'),
('D:\\GraduatePrograms\\MaskRCNN\\mask_rcnn\\UI\\mix1463.json',
         '.'),

再运行

pyinstaller UI_main.spec

封装后的程序正常运行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值