conda虚拟环境列表错误module ‘attr‘ has no attribute ‘s‘的解决方法

列出虚拟环境列表命令:conda info -e 或者conda env list
conda info -e 这个可以正常显示,conda env list却报错了,以前是没有问题的,因为这个命令我更习惯使用,所以这个小问题必须解决掉,或许其他读者可能也会遇到同样的错误:

conda虚拟环境列表错误module ‘attr‘ has no attribute ‘s‘的解决方法_第1张图片

 Traceback (most recent call last):
  File "D:\Anaconda3\Scripts\conda-env-script.py", line 6, in
    from conda_env.cli.main import main
  File "D:\Anaconda3\lib\site-packages\conda_env\cli\main.py", line 37, in
    from . import main_attach
  File "D:\Anaconda3\lib\site-packages\conda_env\cli\main_attach.py", line 2, in
    from ..utils.notebooks import Notebook
  File "D:\Anaconda3\lib\site-packages\conda_env\utils\notebooks.py", line 5, in
    import nbformat
  File "D:\Anaconda3\lib\site-packages\nbformat\__init__.py", line 33, in
    from .validator import validate, ValidationError
  File "D:\Anaconda3\lib\site-packages\nbformat\validator.py", line 12, in
    from jsonschema import ValidationError
  File "D:\Anaconda3\lib\site-packages\jsonschema\__init__.py", line 11, in
    from jsonschema.exceptions import (
  File "D:\Anaconda3\lib\site-packages\jsonschema\exceptions.py", line 152, in
    @attr.s(hash=True)
AttributeError: module 'attr' has no attribute 's'

错误的原因是模块attr没有属性s,于是将含有attr的文件打开,比如exceptions.py,_types.py将里面的@attr.s(hash=True)_cause = attr.ib()等相关都注释看下效果,不出所料这样就会出现新的错误,比如TypeError: object() takes no parameters
所以这种简单注释掉的方法不可行,排除。 

然后查看Anaconda3\Lib\site-packages里面,有包含attrattrs这两个目录,也就是说这两个模块都是有安装的。
难道是attr模块没有属性s吗?也不是这个原因,因为以前是可以正常使用的。我们也可以加载模块,查看下就明白了:

import attr
dir(attr)

#['Attribute', 'Factory', 'NOTHING', 'VersionInfo', '__all__', '__author__', '__builtins__', '__cached__', '__copyright__', '__description__', '__doc__', '__email__', '__file__', '__license__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '__title__', '__uri__', '__url__', '__version__', '__version_info__', '_cmp', '_compat', '_config', '_funcs', '_make', '_next_gen', '_version_info', 'absolute_import', 'asdict', 'assoc', 'astuple', 'attr', 'attrib', 'attributes', 'attrs', 'cmp_using', 'converters', 'dataclass', 'define', 'division', 'evolve', 'exceptions', 'field', 'fields', 'fields_dict', 'filters', 'frozen', 'get_run_validators', 'has', 'ib', 'make_class', 'mutable', 'partial', 'print_function', 'resolve_types', 's', 'set_run_validators', 'setters', 'sys', 'validate', 'validators']

可以看到这个里面是有sib方法的

那只能是后期经常有安装和更新新的东西造成的。于是将这两个模块给卸载掉,然后重新安装:

pip uninstall attr
pip uninstall attrs
pip install attrs

conda虚拟环境列表错误module ‘attr‘ has no attribute ‘s‘的解决方法_第2张图片

问题解决了,恩,对于这种类似模块缺少属性等错误,或许重新安装模块是最快捷的,当然有些错误,更多的可能是版本兼容问题,这个需要注意。

其他关于conda的使用,比如最开始下载安装Anaconda之后的第一步,想修改地址,容易忘记.condarc文件在哪个地方:

可以输命令:conda info

这样就将conda的版本与配置相关信息显示出来了:

conda虚拟环境列表错误module ‘attr‘ has no attribute ‘s‘的解决方法_第3张图片

另外就是创建虚拟环境是最重要的一个功能,这里也重复贴出来,方便大家更熟知:

conda create -n xxx python=yyy

比如指定Python版本为3.7,虚拟环境名称为tf: conda create -n tf python=3.7

创建虚拟环境好了之后,可以通过上面的命令查看你的系统创建了多少个虚拟环境,想要进入到哪个虚拟环境,输入命令激活即可:activate xxx

当然如果conda版本在4.4以上,命令为:conda activate xxx

虽然是一个比较小的问题,同样的在解决问题的过程中,也是会有新的收获! 

你可能感兴趣的:(Python,conda,模块缺少属性,.condarc地址,attr和attrs,pipinstallattrs)