WindowsDowndate工具运行报错AttributeError求助:PathEx类不存在_from_parts属性
WindowsDowndate工具运行报错AttributeError求助:PathEx类不存在_from_parts属性
别担心,刚接触别人的代码遇到问题太正常了,我完全懂这种摸不着头脑的感觉,咱们一步步来解决~
问题根源
你遇到的AttributeError大概率是Python版本不兼容导致的。原代码里的PathEx类直接调用了cls._from_parts(args),但_from_parts是Python标准库pathlib模块里的内部私有方法——这类方法不会对外保证兼容性,不同Python版本(尤其是3.10及以后的新版本)里,要么方法名变了,要么调用方式改了,甚至直接不让外部类这么用了。
具体修复步骤
你只需要修改filesystem_utils.py里PathEx类的__new__方法,把有问题的_from_parts调用替换成标准的父类构造调用就行,操作很简单:
- 打开
filesystem_utils.py文件,找到PathEx类的__new__方法。 - 把原来的这一行:
self = cls._from_parts(args)
替换成:
self = super().__new__(cls, expanded_path, *args, **kwargs)
- 保存文件,然后重新运行
windows_downdate.py。
为什么这么改?
super().__new__(cls, expanded_path, *args, **kwargs)是调用PathEx的父类(也就是WindowsPath)的构造方法,这是Python继承类里创建实例的标准写法,既保留了原代码里展开环境变量的逻辑(expanded_path = os.path.expandvars(path)这部分是对的),又避开了调用私有内部方法的坑。
备选方案(如果上面的方法还不行)
如果修改后还是有问题,可能是工具本身是基于旧版Python开发的,你可以试试:
- 安装Python 3.8或3.9版本(这类旧版本更可能兼容原代码的私有方法调用)
- 用虚拟环境隔离版本,避免影响你电脑上的其他Python程序
内容来源于stack exchange
相关产品推荐
相关产品推荐

