|
1,问题在安装或运行使用PyTorch的Python代码时,您可能会看到一个错误:AttributeError:module'distutils'hasnoattribute'version'1本文将帮助您理解发生此错误的原因以及如何解决此错误。2,为什么AttributeError:module‘distutils’hasnoattribute‘version’发生?当你尝试从distutils模块访问version属性时发生此错误,如下所示:fromsetuptoolsimportdistutilsprint(distutils.version)#❌123发生此错误是因为setuptools版本59.6.0中的更改以某种方式中断了对version属性的调用。而且,在最新版本中,version属性似乎已经从distutils中删除。您可以通过运行dir()函数来确认这一点:fromsetuptoolsimportdistutilsprint(distutils.__version__,dir(distutils))123'运行运行输出如下所示:3.10.9['_','__builtins__','__cached__','__doc__','__file__','__loader__','__name__','__package__','__path__','__spec__','__version__','_log','archive_util','cmd','command','config','core','debug','dep_util','dir_util','dist','errors','extension','fancy_getopt','file_util','filelist','importlib','log','spawn','sys','util']123456如你所见:输出中只显示了__version__属性。已知在导入或安装PyTorch包时会发生此错误,在PyTorch版本1.11.0中已经修复了该错误。3,如何解决AttributeError:module‘distutils’hasnoattribute‘version’如果您正在使用PyTorch,则可以通过升级Torch包来解决此错误。运行以下命令之一升级torchpackage:#Ifyouusepip:pipinstall--upgradetorch#Forpip3:pip3install--upgradetorch#Ifyouuseconda:condaupdatepytorch12345678如果你想要测试pytorch的版本version1.11.0:#Ifyouusepip:pipinstalltorch==1.11.0#Forpip3:pip3installtorch==1.11.0#Ifyouuseconda:condainstallpytorch=1.11.012345678一旦升级了PyTorch版本,错误就会消失。如果您使用的其他Python包没有解决这个错误,那么可以将setuptools版本固定到59.5.0,这样distutils.version仍然可以工作。使用下列命令之一来固定setuptools包版本:#Ifyouusepip:pipinstallsetuptools==59.5.0#Forpip3:pip3installsetuptools==59.5.0#Ifyouuseconda:condainstallsetuptools=59.5.012345678如果conda回复PackagesNotFoundError,你需要安装pip在这个conda环境中,然后再使用pip来安装setuptools:#Incondaenvironment,installpip:condainstallpip#Theninstallsetuptools:pipinstallsetuptools==59.5.012345distutils.version模块现在可以访问了。或者,您也可以将import语句调整为importdistutils.version.LooseVersion,如果你可以访问源码:#from:fromsetuptoolsimportdistutils#to:fromdistutils.versionimportLooseVersion12345'运行运行虽然从setuptools导入distutils会导致错误,但导入LoseVersion类可以正常工作4,总结当您尝试从distutils模块访问version属性时,会发生AttributeError:module‘distutils’hasnoAttribute‘version’错误。最新版本的distutils模块不再具有dir()函数输出中看到的版本类,因此您需要导入LoosVersion类或将setuptools包降级到59.5.0版。如果在运行PyTorch时看到此错误,请将PyTorch包升级到1.11.0或更新版本。5参考:【PythonAttributeError:module‘distutils’hasnoattribute‘version’】https://sebhastian.com/python-attributeerror-module-distutils-has-no-attribute-version/#google_vignette
|
|