Windows加载模型提示不能实例化PosixPath(cannot instantiate ‘PosixPath‘ on your system)

      在Linux环境下训练好了模型,再使用Windows系统加载模型使用报错,原来是使用了PosixPath这个高级库。

由于 Windows 操作系统 和 Linux 操作系统 文件系统设计存差异。路径字符串的表示方法有所不同,例如Linux 使用 “ / ” 分隔符而 Windows 使用 “ \ ”,根目录表示方式也不同。因此针对两套系统创建了WindowsPath类 和 PosixPath类。

在 Windows 操作系统下,默认创建的 Path 对象是 WindowsPath 对象,其余Linux,unix 等满足 POSIX规范的操作系统都将被创建为 PosixPath 对象。

      在Windows系统中使用pathlib库加载PyTorch训练好的模型时遇到PosixPath错误。博主通过修改pathlib.py源码,将PosixPath替换为WindowsPath以解决不兼容问题,确保模型在Windows环境下正常实例化。
        windows环境下使用pathlib库加载pytorch训练好的模型出现不能实例化PosixPath错误。

在pathlib.py文件的1081行做如下修改:

    

    def __new__(cls, *args, **kwargs):
        # 源码
        # if cls is Path:
        #     cls = WindowsPath if os.name == 'nt' else PosixPath
        # self = cls._from_parts(args, init=False)
        # if not self._flavour.is_supported:
        #     raise NotImplementedError("cannot instantiate %r on your system"
        #                               % (cls.__name__,))
        # self._init()
        # return self
 
        # 修改
        if cls is Path:
            # cls = WindowsPath if os.name == 'nt' else PosixPath
            cls = WindowsPath
        self = cls._from_parts(args, init=False)
        # Windows doesn't support PosixPath
        if type(self) == PosixPath:
            cls = WindowsPath
            self = cls._from_parts(args, init=False)
        if not self._flavour.is_supported:
            raise NotImplementedError("cannot instantiate %r on your system"
                                      % (cls.__name__,))
        self._init()
        return self


        其中上方注释部分为源码,下方的代码为修改代码。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值