【问题标题】:Why do I get a list of errors when trying to load matplotlib in PyCharm with the Anaconda environment?为什么我在尝试使用 Anaconda 环境在 PyCharm 中加载 matplotlib 时会收到错误列表?
【发布时间】:2019-03-22 10:54:41
【问题描述】:

我已经用 Anaconda 安装了 PyCharm。我通过 Project Interpreter 选项卡添加包,使用 PyCharm 设置很好地安装了 numpy。但是我现在正在尝试安装 matplotlib,但我得到了一个错误列表。

只需包含该行

import matplotlib.pyplot as plt

我得到错误:

AttributeError: module 'matplotlib.pyplot' has no attribute 'switch_backend'
Matplotlib support failed
Traceback (most recent call last):
  File "C:\Program Files\JetBrains\PyCharm 2018.2.4\helpers\pydev\_pydev_bundle\pydev_import_hook.py", line 23, in do_import
    succeeded = activate_func()
  File "C:\Program Files\JetBrains\PyCharm 2018.2.4\helpers\pydev\_pydev_bundle\pydev_console_utils.py", line 199, in <lambda>
    "matplotlib": lambda: activate_matplotlib(self.enableGui),
  File "C:\Program Files\JetBrains\PyCharm 2018.2.4\helpers\pydev\pydev_ipython\matplotlibtools.py", line 96, in activate_matplotlib
    gui, backend = find_gui_and_backend()
  File "C:\Program Files\JetBrains\PyCharm 2018.2.4\helpers\pydev\pydev_ipython\matplotlibtools.py", line 47, in find_gui_and_backend
    backend = matplotlib.rcParams['backend']
  File "C:\Users\calcl\Anaconda3\envs\PXP\lib\site-packages\matplotlib\__init__.py", line 892, in __getitem__
    plt.switch_backend(rcsetup._auto_backend_sentinel)

什么可能导致这个问题,我将如何解决它?

我正在使用 Python 3.6 和 3.0.0 Matplotlib 和 PyCharm 2018.2.4

【问题讨论】:

  • 违规行是this。 pyplot 声称没有switch_backend,这听起来很奇怪,因为它是obviously does。因此,我认为要么安装损坏或不完整,要么 PyCharm 遮住了一些 matplotlib 函数。
  • 听起来也和this report很像,遗憾的是从来没有被澄清过。

标签: python matplotlib pycharm


【解决方案1】:

就像@BigFish 写的,这是PyCharm 端的一个bug,你可以看bug 报告here

在 PyCharm 2018.3 中已修复,因此最简单的解决方案是升级 PyCharm。 替代解决方法是降级 matplotlib,或在运行配置中取消选中“使用 python 控制台运行”:

这将允许您运行/调试,但如果您使用交互式控制台,您仍然会收到这些错误。

作为旁注,PyCharm 有一个 history 落后于 matplotlib API 更改,所以这应该是你下次的第一个猜测......

【讨论】:

    【解决方案2】:

    我在使用 Python 3.6 和 3.0.0 Matplotlib 和 PyCharm 2018.2.4 时遇到了同样的错误。错误显然在 Pycharm 方面,正如回溯和通过 anaconda 提示符或 spyder IDE 导入 matplotlib 不会产生此错误的事实所表明的那样。

    根据 matplotlib https://github.com/matplotlib/matplotlib/releases 的发行说明,“切换后端”实用程序似乎是一项新功能。正如@Psychotechnopath 的回答中指出的那样,路径可能存在一些问题,因此当您的 Traceback 中的 Pycharm 脚本调用它时,Pycharm 无法找到 switch 后端模块。

    但是,我认为手动向路径中添加任何内容并不是一个理想且强大的解决方案。相反,我使用 Anaconda Prompt 中的 conda 安装程序将 matplotlib 降级到 2.2.3 版:

    conda install matplotlib=2.2.3
    

    在这次降级之后,我能够再次在 Pycharm 中导入 matplotlib,没有任何问题。

    【讨论】:

    • PyCharm 真的很吃奶酪
    【解决方案3】:

    可能您在安装 Anaconda 时没有“添加到路径”,或者您没有从激活的 conda 环境中运行 PyCharm。不支持在没有激活环境的情况下运行 Pycharm,并且在尝试安装软件包时会导致问题。您可以尝试两种解决方案:

    • 重新安装 Anaconda 并勾选“添加到路径”选项。确保您知道这意味着什么,例如查看此帖子:Why (or why not) Add Anaconda to path? 因为如果你在路径上有多个 python 安装,这可能会导致问题(这就是为什么 Anaconda 在安装时警告你这样做)。总而言之,将 Anaconda 添加到路径可以让 PyC​​harm 等程序更容易找到所有内容的安装位置,从而减少导入错误的机会。

    • 启动 Anaconda 提示符,并通过 activate Environmentname 激活您要使用的环境。如果您从不使用单独的环境,而只是使用基本/根环境,则不需要激活任何东西,因为启动 Anaconda 提示符会自动激活基本/根环境。激活选择的环境后,从此提示启动 PyCharm。

    如果这解决了您的问题,请告诉我 =)

    【讨论】:

    • 由于错误是从 conda env 中的文件(在本例中为“PXP”)触发的,我不太明白这将如何解决问题。如果 anaconda 没有“添加到路径”,是否会发生这种情况的具体解释?
    • @ImportanceOfBeingErnest 我在尝试导入 Numpy 和 matplotlib 时遇到了类似的导入问题,并为此向 Continuum 发送了错误报告 (github.com/conda/conda/issues/7833)。一位开发人员告诉我,当您运行未激活的 conda 环境时,可能会出现与导入相关的问题。我认为问题是,当你在安装过程中没有将 Anaconda 添加到 path 时,Pycharm 无法激活你的 conda 环境,从而导致导入错误。重新安装并添加到路径后,每个导入对我来说都很好。
    • @ImportanceOfBeingErnest 如果您有兴趣,请花时间阅读错误报告,因为它提供了更深入的信息。可以看作是“具体解释”的小引语 imo(开发人员这样说):“要从 Anaconda 发行版运行任何软件,您必须激活该环境或将值添加到 PATH(即让安装程序执行此操作) - 这是不推荐。”
    • 是的。所以我的观点是,因为错误消息显示了激活的环境(我在这里假设“PXP”不是(基础)。),PyCharm 在该环境中正确启动。如果不是这样,答案当然是有用的。
    • 我明白了。从我自己的经验来说:就我而言,PyCharm 也显示了正确的环境路径,但仍然所有模块都无法导入。我们会看到的,希望它有用 =)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 2021-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多