Python 模块matplotlib.cm没有[color]成员

Python 模块matplotlib.cm没有[color]成员,python,matplotlib,visual-studio-code,member,pylint,Python,Matplotlib,Visual Studio Code,Member,Pylint,我一直在练习matplotlib,然后在短暂的休息后,我再次打开代码,令我惊讶的是,我得到了这个缺少成员的错误,这是我以前没有得到的 Module 'matplotlib.cm' has no 'Blues' memberpylint(no-member) 问题是: 正如终端上显示的那样,这个据称失踪的成员就在那里: 我在这个论坛()上找到了一个解决方案,它只是传递颜色而不是路径,如: cmap='Blues' 而不是: cmap=plt.cm.Blues 它是有效的。然而,对我来说,它似

我一直在练习matplotlib,然后在短暂的休息后,我再次打开代码,令我惊讶的是,我得到了这个缺少成员的错误,这是我以前没有得到的

Module 'matplotlib.cm' has no 'Blues' memberpylint(no-member)
问题是:

  • 正如终端上显示的那样,这个据称失踪的成员就在那里:
  • 我在这个论坛()上找到了一个解决方案,它只是传递颜色而不是路径,如:

    cmap='Blues'
    
    而不是:

    cmap=plt.cm.Blues
    
    它是有效的。然而,对我来说,它似乎并没有结束,因为我真的觉得必须有一个变通方法来编写路径(“plt.cm.Blues”,几周前还可以),因为:

  • plt指的是matplotlib.pylint,而不仅仅是matplotlib。为什么此错误指向plt(即matplotlib.pyplot)并报告matplotlib.cm中缺少的成员(即忽略pyplot)?
  • “cm”和它的许多颜色显然都有。一个简单的dir搜索就可以证明这一点。实际上,matplotlib和pyplot都有一个名为“cm”的属性,它们甚至是同一个对象:
  • 因此,有两种可能的途径可以调用“Blues”,但VSCode似乎无法将它们联系起来。对象在那里,路径被正确地写入,那么发生了什么? 即使不导入整个matplotlib也解决了这个问题。 此外,我在matplotlib的文档中找不到任何相关内容。我希望我只是不擅长阅读文档:)

    非常感谢您的帮助。谢谢大家!

    [更新:已解决] 对此,我有两种可能的解决方案:

  • 在settings.json中设置pylint以忽略无成员错误,或
  • 更新Python,这是我必须要做的。
  • 所以我选择了后者,但是VSCode无法识别更新。无论我做了什么(更新Python、更新VSCode、卸载并重新安装所有内容…),VSCode都不会显示更新的Python解释器(3.9.5),而是显示我的旧版本(3.9.1)。我正确地设置了路径,但对于VSCode来说,就好像我从未更新过Python一样。

    因此,经过一些彻底的研究,我尝试卸载VSCode,但这次通过删除文件夹“Code”(Win+R,然后键入“%appdata”,点击Enter)来清除其缓存。最后,VSCode按预期读取python应用程序,更妙的是,linting问题消失了。

    VSCode使用的python解释器是否可能与您在终端中使用的系统python不同?我的猜测是,VSCode python有一个不同版本的matplotlib,它可以解释两个脚本之间的不一致性。您的脚本在python 3.9.5和matplotlib 3.4.2上运行得很好


    您可以运行代码,对吗

    这是pylint而不是代码的问题

    您可以参考,解释pylint中的
    no member
    问题

    您可以将其添加到
    settings.josn
    文件中以修复此问题:

    "python.linting.pylintArgs": [
        "--c-extension-no-member",
    ]
    

    谢谢但是现在VSCode无法识别3.9.5版本。我已经更新了,但在左下角的蓝色条中仍然显示“Python 3.9.1 64位”您使用的matplotlib版本是什么?只是找不到有关Python版本问题的任何信息。我目前的版本显然是3.9.5(cmd提示符是这样说的,文件属性是这样说的,安装程序是这样说的…),但对于VSCode来说,它是3.6.1(至少它在底部的蓝色条中是这样说的)。路径是一样的,我所做的只是更新。文件夹中的文件“python.exe”现在是python的3.9.5版,但是……对不起,我指的是3.4.2(matplotlib版本)@顺便说一句,我创建了一个虚拟环境,显然在venv文件夹中创建了Python应用程序的专用副本,从而使VSCode找到了一个更新的解释器。现在3.9.5显示在解释器列表中,但该实例来自venv文件夹。我想让它“停止思考”,Python文件夹中的版本是3.9.1,所以我可以将其设为默认版本。谢谢你,Steven。是的,我可以毫无错误地运行代码,可能是因为在终端中运行代码的Python版本是正确的,即更新版本。使错误消失的是完全卸载VSCode:运行卸载程序,关键是删除“Code”文件夹。有些bug没有让VSCode按预期读取解释器:虽然我已经将Python更新为3.9.5,但VSCode会将其显示为3.6.1,最奇怪的是,它显然正在运行。我的问题从pylint问题变成了“VSCode无法识别Python更新”问题,这让我认为最好创建另一个线程,这里:()@101is5您好,很高兴听到您的回复。我认为Python版本问题是由缓存引起的,我也遇到过这个问题。您可以尝试卸载并重新安装“Python”扩展。@101is5您可以测试一下我的方法吗?我认为应该行得通。解释器版本的问题只是缓存问题。你的代码一点问题都没有,只是一个错误。希望收到你的来信,别客气!你的回答非常有启发性,但我在完全卸载后碰巧读到了。所以现在问题已经解决了,我无法真正测试你的方法,但我可能需要它。感谢所有的帮助和支持!
    cmap=plt.cm.Blues
    
    >>> dir(plt.cm) == dir(matplotlib.cm)
    True
    
    "python.linting.pylintArgs": [
        "--c-extension-no-member",
    ]