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

终端运行Matplotlib脚本触发TypeError的求助问询

问题描述

平时在Jupyter中运行Matplotlib脚本一切正常,但在终端运行以下代码时出现大量报错:

import matplotlib.pyplot as plt

x = [1,2,3]
y = [1,2,3]

plt.plot(x,y)

尝试卸载并重装Matplotlib后问题仍未解决,报错信息如下:

Traceback (most recent call last):
  File "c:\Users\Rogelio Medel\OneDrive\CODECADEMY\PERSONAL PROJECTS\Matplotlib2\testy.py", line 6, in <module>
    plt.plot(x,y)
  File "C:\Users\Rogelio Medel\AppData\Local\Programs\Python\Python39\lib\site-packages\matplotlib\pyplot.py", line 2730, in plot
    return gca().plot(
  File "C:\Users\Rogelio Medel\AppData\Local\Programs\Python\Python39\lib\site-packages\matplotlib\pyplot.py", line 2227, in gca
    return gcf().gca()
  File "C:\Users\Rogelio Medel\AppData\Local\Programs\Python\Python39\lib\site-packages\matplotlib\pyplot.py", line 832, in gcf
    return figure()
  File "C:\Users\Rogelio Medel\AppData\Local\Programs\Python\Python39\lib\site-packages\matplotlib\_api\deprecation.py", line 454, in wrapper       
    return func(*args, **kwargs)
  File "C:\Users\Rogelio Medel\AppData\Local\Programs\Python\Python39\lib\site-packages\matplotlib\pyplot.py", line 773, in figure
    manager = new_figure_manager(
  File "C:\Users\Rogelio Medel\AppData\Local\Programs\Python\Python39\lib\site-packages\matplotlib\pyplot.py", line 348, in new_figure_manager      
    _warn_if_gui_out_of_main_thread()
  File "C:\Users\Rogelio Medel\AppData\Local\Programs\Python\Python39\lib\site-packages\matplotlib\pyplot.py", line 338, in _warn_if_gui_out_of_main_thread
    if (_get_required_interactive_framework(_get_backend_mod()) and
  File "C:\Users\Rogelio Medel\AppData\Local\Programs\Python\Python39\lib\site-packages\matplotlib\pyplot.py", line 207, in _get_backend_mod        
    switch_backend(dict.__getitem__(rcParams, "backend"))
  File "C:\Users\Rogelio Medel\AppData\Local\Programs\Python\Python39\lib\site-packages\matplotlib\pyplot.py", line 252, in switch_backend
    switch_backend(candidate)
  File "C:\Users\Rogelio Medel\AppData\Local\Programs\Python\Python39\lib\site-packages\matplotlib\pyplot.py", line 265, in switch_backend
    backend_mod = importlib.import_module(
  File "C:\Users\Rogelio Medel\AppData\Local\Programs\Python\Python39\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "C:\Users\Rogelio Medel\AppData\Local\Programs\Python\Python39\lib\site-packages\matplotlib\backends\backend_qtagg.py", line 12, in <module> 
    from .backend_qt import QtCore, QtGui, _BackendQT, FigureCanvasQT
  File "C:\Users\Rogelio Medel\AppData\Local\Programs\Python\Python39\lib\site-packages\matplotlib\backends\backend_qt.py", line 72, in <module>    
    _MODIFIER_KEYS = [
  File "C:\Users\Rogelio Medel\AppData\Local\Programs\Python\Python39\lib\site-packages\matplotlib\backends\backend_qt.py", line 73, in <listcomp>  
    (_to_int(getattr(_enum("QtCore.Qt.KeyboardModifier"), mod)),
TypeError: int() argument must be a string, a bytes-like object or a number, not 'KeyboardModifier'
解决方案

该报错是Matplotlib默认Qt后端与Python 3.9版本不兼容导致的,可尝试以下几种解决方法:

  • 方法1:切换非GUI后端
    若无需弹出图形界面,仅需生成或保存图片,可指定Matplotlib使用非交互式后端,修改代码如下:

    import matplotlib
    matplotlib.use('Agg')
    import matplotlib.pyplot as plt
    
    x = [1,2,3]
    y = [1,2,3]
    
    plt.plot(x,y)
    plt.savefig('plot.png')  # 必须添加保存图片的代码,终端不会显示图形窗口
    
  • 方法2:降级Matplotlib版本
    Python 3.9与新版本Matplotlib的Qt后端兼容性较差,可降级到适配版本:

    pip install matplotlib==3.7.1
    

    该版本对Python 3.9支持良好,可正常使用Qt后端。

  • 方法3:安装兼容的Qt库
    若需保留当前Matplotlib版本,可安装适配的PyQt5版本:

    pip install pyqt5==5.15.9
    

    此版本可与Python 3.9及新版Matplotlib兼容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 08:32:17