AttributeError:模块“IPython.utils.traitlets”没有属性“Unicode”

mla*_*a01 4 module attributeerror kaggle google-colaboratory python-traitlets

我正在 Kaggle 服务器上运行 .ipynb 笔记本。

在第一个代码单元中,导入模块时,特别是来自 google.patches 的 cv2_imshow,如下所示,

from google.colab.patches import cv2_imshow

我收到此错误:

/opt/conda/lib/python3.7/site-packages/IPython/utils/traitlets.py:5: UserWarning: IPython.utils.traitlets has moved to a top-level traitlets package.
  warn("IPython.utils.traitlets has moved to a top-level traitlets package.")
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
/tmp/ipykernel_27/1840971195.py in <module>
     18 
     19 # Display images using OpenCV
---> 20 from google.colab.patches import cv2_imshow                                                      # Importing cv2_imshow from google.patches to display images
     21 
     22 # Ignore warnings

/opt/conda/lib/python3.7/site-packages/google/colab/__init__.py in <module>
     24 from google.colab import _tensorflow_magics
     25 from google.colab import auth
---> 26 from google.colab import data_table
     27 from google.colab import drive
     28 from google.colab import files

/opt/conda/lib/python3.7/site-packages/google/colab/data_table.py in <module>
    164 
    165 
--> 166 class _JavascriptModuleFormatter(_IPython.core.formatters.BaseFormatter):
    167   format_type = _traitlets.Unicode(_JAVASCRIPT_MODULE_MIME_TYPE)
    168   print_method = _traitlets.ObjectName('_repr_javascript_module_')

/opt/conda/lib/python3.7/site-packages/google/colab/data_table.py in _JavascriptModuleFormatter()
    165 
    166 class _JavascriptModuleFormatter(_IPython.core.formatters.BaseFormatter):
--> 167   format_type = _traitlets.Unicode(_JAVASCRIPT_MODULE_MIME_TYPE)
    168   print_method = _traitlets.ObjectName('_repr_javascript_module_')
    169 

AttributeError: module 'IPython.utils.traitlets' has no attribute 'Unicode'
Run Code Online (Sandbox Code Playgroud)

运行后

from traitlets import *

print(traitlets)

<module 'traitlets.traitlets' from '/opt/conda/lib/python3.7/site-packages/traitlets/traitlets.py'>
Run Code Online (Sandbox Code Playgroud)

并重新运行问题行,处理错误消息的顶部部分,

/opt/conda/lib/python3.7/site-packages/IPython/utils/traitlets.py:5: UserWarning: IPython.utils.traitlets has moved to a top-level traitlets package.
  warn("IPython.utils.traitlets has moved to a top-level traitlets package.")
Run Code Online (Sandbox Code Playgroud)

错误消息的这一部分消失,但其他所有内容保持不变。

google-colab 1.0.0
Run Code Online (Sandbox Code Playgroud)

小智 8

警告消息表明 Traitlets 现在是顶级包,而不是仍在 IPython.utils 包下。

您可以通过编辑 data_table.py 文件 ( ) 来修复错误 /opt/conda/lib/python3.7/site-packages/google/colab/data_table.py。更改导入 Traitlets 包的行

from IPython.utils import traitlets as _traitlets

import traitlets as _traitlets

我不知道为什么会出现这个错误,但这无论如何为我解决了它。


エンジ*_*ベータ 5

我有一个 jupyter-notebook 环境,我在 WSL 的 Ubuntu 上克隆了colabotools并使用 pip 安装了它。运行“from google.colab import output”时,我遇到了类似的错误。

作为解决方法,我将“traitlets”模块目录复制到 IPython.utils 模块目录并备份 IPython.utils/traitlets.py。之后我就没有再犯任何错误。下面是执行脚本。

!cp -r /home/engbjapan/.local/lib/python3.10/site-packages/traitlets /home/engbjapan/.local/lib/python3.10/site-packages/IPython/utils/

!mv /home/engbjapan/.local/lib/python3.10/site-packages/IPython/utils/traitlets.py /home/engbjapan/.local/lib/python3.10/site-packages/IPython/utils/traitlets.py.bkup

from IPython.utils import traitlets

traitlets.Unicode
>IPython.utils.traitlets.traitlets.Unicode

from google.colab import output
#no error
from google.colab.patches import cv2_imshow
#no error
Run Code Online (Sandbox Code Playgroud)

供你参考。