小能豆

ImportError:没有名为 matplotlib.pyplot 的模块

javascript

我目前正在练习matplotlib。这是我练习的第一个例子。

#!/usr/bin/python

import matplotlib.pyplot as plt

radius = [1.0, 2.0, 3.0, 4.0]
area = [3.14159, 12.56636, 28.27431, 50.26544]

plt.plot(radius, area)
plt.show()

当我使用 运行此脚本时python ./plot_test.py,它可以正确显示绘图。但是,我单独运行它时,./plot_test.py它会抛出以下错误:

Traceback (most recent call last):
  File "./plot_test.py", line 3, in <module>
    import matplotlib.pyplot as plt
ImportError: No module named matplotlib.pyplot

python 是否在不同位置寻找 matplotlib?

环境是:

  • Mac OS X 10.8.4 64 位
  • 内置 Python 2.7

numpy、scipy、matplotlib 安装如下:

sudo port install py27-numpy py27-scipy py27-matplotlib \
py27-ipython +notebook py27-pandas py27-sympy py27-nose

阅读 40

收藏
2024-09-27

共1个答案

小能豆

问题似乎是因为当你直接运行脚本(./plot_test.py)时,脚本是使用默认系统 Python执行的,而该系统 Python 可能没有matplotlib安装所需的模块。

当您运行 时python ./plot_test.py,它会使用您明确指定的 Python 解释器,该解释器可能是您安装的macports并且已matplotlib安装的解释器。

以下是可能发生的情况及其解决方法的细分:

问题分解

  • 当您运行时python ./plot_test.py
    您明确使用matplotlib已安装的 Python 解释器(可能/opt/local/bin/python是通过 macports 安装的另一个版本)。
  • 当您运行时./plot_test.py
    该脚本将使用尚未安装的系统默认 Python(在 macOS 上通常位于)执行,从而导致。/usr/bin/python``matplotlib``ImportError

解决方案选项

1. 在 Shebang 中使用正确的 Python 解释器

您可以在 shebang 中指定 Python 解释器的确切路径(#!/usr/bin/python这是默认值,它是系统 Python)。您需要将其更改为已matplotlib安装的 Python 版本。

  • 要找出pythonwith 的matplotlib安装位置,您可以运行:

which python

它可能会返回类似的内容/opt/local/bin/python(或 MacPorts 安装它的任何位置)。

  • 更新脚本中的 shebang:

#!/opt/local/bin/python

这将确保当您运行时./plot_test.py,它使用具有所需库的正确的 Python 解释器。

2. 使用虚拟环境

一个好的做法是使用虚拟环境来管理 Python 包。这样,您就可以确保所有必需的包(包括matplotlib)都可以在专用环境中使用。

设置方法如下:

  1. virtualenv如果你没有,请安装:

sudo port install py27-virtualenv

  1. 创建虚拟环境:

virtualenv venv

  1. 激活虚拟环境:

source venv/bin/activate

  1. 安装必要的软件包:

pip install matplotlib

  1. 现在,当您运行脚本时,请确保虚拟环境已激活,并且它将使用正确的 Python 解释器和已安装的包。

3. 更新 PATH

您可以修改$PATH以确保matplotlib默认使用已安装的 Python 解释器。将 MacPorts Python 解释器添加到您的路径:

  1. 打开终端并编辑您的.bash_profile(或.zshrc对于 zsh):

nano ~/.bash_profile

  1. 添加以下行(替换为 Python 安装的实际路径):

export PATH="/opt/local/bin:$PATH"

  1. 保存并关闭文件,然后重新加载终端配置:

source ~/.bash_profile

现在,当您运行时./plot_test.py,它将使用正确的 Python 解释器。

结论

出现此问题的原因是系统默认的 Python 未matplotlib安装。您可以通过以下方式修复它:

  • 在 shebang 中使用正确的 Python 解释器。
  • 使用虚拟环境。
  • 修改您的$PATH使用 MacPorts Python 作为默认解释器。
2024-09-27