You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vispy绘制三维数据遇UnicodeDecodeError及模块导入问题求助

问题描述

我是Vispy新手,想用Vispy绘制3列的三维数据,但代码一直报错,甚至官方的点云示例代码也无法运行。遇到两个核心问题:

  1. 提示不存在vispy.scene模块
  2. 抛出UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 2575: character maps to <undefined>错误

怀疑是显卡问题,求解决方法。

相关代码

canvas = vispy.scene.SceneCanvas(keys='interactive', show=True)
view = canvas.central_widget.add_view()

# generate data

for X_train, y_train in dataset:
    outputs = model.fit(X_train, y_train)

    centers = torch.normal(size=(50, 3))
    # symbols = np.random.choice(['o', '^'], len(outputs))
    indexes = torch.normal(size=len(outputs), loc=centers.shape[0] / 2,
                               scale=centers.shape[0] / 3)
    indexes = torch.clip(indexes, 0, centers.shape[0] - 1).astype(int)

    # create a scatter object and fill in the data
    scatter = visuals.Markers()
    scatter.set_data(outputs, edge_width=0, face_color=(1, 1, 1, .5), size=5)

    view.add(scatter)

    view.camera = 'turntable'  # or try 'arcball'

    # add a colored 3D axis for orientation
    axis = visuals.XYZAxis(parent=view.scene)

完整报错栈

Traceback (most recent call last):
  File "\visualization\logs.py", line 2, in <module>
    import vispy.scene
  File "\lib\site-packages\vispy\scene\__init__.py", line 33, in <module>
    from .visuals import *  # noqa
  File "\lib\site-packages\vispy\scene\visuals.py", line 18, in <module>
    from .. import visuals
  File "\lib\site-packages\vispy\visuals\__init__.py", line 14, in <module>
    from .axis import AxisVisual  # noqa
  File "\lib\site-packages\vispy\visuals\axis.py", line 11, in <module>
    from .visual import CompoundVisual, updating_property
  File "\lib\site-packages\vispy\visuals\visual.py", line 91, in <module>
    from .. import gloo
  File "\lib\site-packages\vispy\gloo\__init__.py", line 47, in <module>
    from . import gl  # noqa
  File "\lib\site-packages\vispy\gloo\gl\__init__.py", line 34, in <module>
    from ._constants import *  # noqa
  File "\lib\site-packages\vispy\gloo\gl\_constants.py", line 330, in <module>
    if repr(ob).startswith('GL_'):
  File "\lib\_sitebuiltins.py", line 61, in __repr__
    self.__setup()
  File "\lib\_sitebuiltins.py", line 51, in __setup
    data = fp.read()
  File "\lib\encodings\cp1252.py", line 23, in decode
    return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 2575: character maps to <undefined>

Process finished with exit code 1

解决方案

1. 修复Unicode编码错误

这个错误是Python读取文件时使用了系统默认的cp1252编码,无法解析文件中的特殊字符。解决方法:

  • 临时方案:在运行代码的命令行中先执行set PYTHONUTF8=1(Windows),再启动脚本;Linux/macOS执行export PYTHONUTF8=1
  • 永久方案:修改系统区域设置为UTF-8编码(Windows需在控制面板-区域-管理中设置)

2. 解决vispy.scene模块缺失问题

  • 检查Vispy版本:执行pip show vispy,若版本过旧,卸载重装最新版:
    pip uninstall vispy -y && pip install vispy
    
  • 强制重装修复损坏文件:
    pip install --force-reinstall vispy
    
  • 确认Python环境一致性:确保运行代码的环境和安装Vispy的环境是同一个(比如避免虚拟环境和全局环境混淆)

3. 排除显卡相关问题

  • 更新显卡驱动:前往NVIDIA/AMD官网下载安装对应显卡的最新驱动
  • 切换Vispy渲染后端:在代码开头添加以下代码,尝试兼容的后端:
    import vispy
    vispy.use('pyqt5')  # 可选值:'glfw'、'sdl2'、'pygame',根据环境选择
    
  • 检查OpenGL支持:执行以下命令查看系统OpenGL版本,确保至少支持2.1:
    import vispy
    print(vispy.sys_info())
    

4. 修正代码中的导入问题

你的代码未导入visuals模块,需补充:

from vispy import scene
from vispy.scene import visuals

内容的提问来源于stack exchange,提问作者Joseph_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 08:45:38