导入 matplotlib 导致“int() 参数必须是字符串”错误

lov*_*hun 4 python matplotlib

我是Python新手。几天前我安装了Anaconda和PyCharm(在D盘),我正在尝试使用该matplotlib包来绘制一张图片。当我单击“运行”时,出现以下错误:

Traceback (most recent call last):
  File "G:\onedrive\OneDrive - mail.dlut.edu.cn\PyCharm\shock wave\P6.py", line 7, in <module>
    import matplotlib.pyplot as plt
  File "D:\anaconda3\lib\site-packages\matplotlib\pyplot.py", line 2230, in <module>
    switch_backend(rcParams["backend"])
  File "D:\anaconda3\lib\site-packages\matplotlib\__init__.py", line 672, in __getitem__
    plt.switch_backend(rcsetup._auto_backend_sentinel)
  File "D:\anaconda3\lib\site-packages\matplotlib\pyplot.py", line 247, in switch_backend
    switch_backend(candidate)
  File "D:\anaconda3\lib\site-packages\matplotlib\pyplot.py", line 267, in switch_backend
    class backend_mod(matplotlib.backend_bases._Backend):
  File "D:\anaconda3\lib\site-packages\matplotlib\pyplot.py", line 268, in backend_mod
    locals().update(vars(importlib.import_module(backend_name)))
  File "D:\anaconda3\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "D:\anaconda3\lib\site-packages\matplotlib\backends\backend_qtagg.py", line 12, in <module>
    from .backend_qt import (
  File "D:\anaconda3\lib\site-packages\matplotlib\backends\backend_qt.py", line 73, in <module>
    _MODIFIER_KEYS = [
  File "D:\anaconda3\lib\site-packages\matplotlib\backends\backend_qt.py", line 74, 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'

Process finished with exit code 1
Run Code Online (Sandbox Code Playgroud)

Mat*_*all 11

看起来这是pyside6v6.3.0matplotlib中的一个错误,渲染绘图所依赖的库之一;这是错误报告。这是一个新错误,而且已经被修复了,所以你遇到它真是太不幸了!

\n

解决方案:该问题似乎在版本 6.4.0(10 月 13 日发布)中得到修复pyside,因此一种解决方案是升级它,或者您可以降级,例如降级到版本 6.2。另一个解决方案是尝试使用另一个后端,因为我认为问题只影响 Qt 后端。(A是\xe2\x80\x94backend的渲染引擎,请阅读有关它们的所有内容。)尝试后一个选项很容易,所以让我们从这里开始。matplotlib

\n

使用另一个后端

\n

在脚本顶部尝试一下:

\n
import matplotlib\nmatplotlib.use(\'tkagg\')\n
Run Code Online (Sandbox Code Playgroud)\n

或者你也可以尝试其他的;请参阅此页面寻求帮助。

\n

升档或降档pyside

\n

为了解决这个问题,您需要处理“虚拟环境”。您可能已经在这样做了。环境允许您为您可能正在处理的不同项目拥有不同版本的 Python 和不同的包集合。

\n

修复环境base...

\n

当您安装 Anaconda 时,它会创建一个名为的环境base,其中包含 Anaconda 中的“所有内容”(Python 以及许多类似的库matplotlib)。您可以通过从“开始”菜单打开Anaconda 提示符pyside并键入以下内容来升级环境中的版本:base

\n
conda install -c conda-forge pyside==6.4.0\n
Run Code Online (Sandbox Code Playgroud)\n

然而,大多数程序员不使用他们的基本环境,而更喜欢管理特定于他们项目的环境。如果您正在这样做,或者想尝试一下,请继续阅读。

\n

...或者创造一个新环境

\n

或者,要创建新环境,请打开 Anaconda 提示符并键入以下内容,但替换MYENV为适合环境的简短名称:

\n
conda create -n MYENV python=3.10 pyside=6.4.0 anaconda\n
Run Code Online (Sandbox Code Playgroud)\n

或者您可以替换anaconda为您想要的软件包列表,例如jupyter scipy networkx或其他。

\n

然后,您将开始使用此环境,并且conda activate MYENV您的脚本或笔记本应该可以在其中运行,没有问题。

\n