我目前正在练习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它会抛出以下错误:
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?
环境是:
numpy、scipy、matplotlib 安装如下:
sudo port install py27-numpy py27-scipy py27-matplotlib \ py27-ipython +notebook py27-pandas py27-sympy py27-nose
问题似乎是因为当你直接运行脚本(./plot_test.py)时,脚本是使用默认系统 Python执行的,而该系统 Python 可能没有matplotlib安装所需的模块。
matplotlib
当您运行 时python ./plot_test.py,它会使用您明确指定的 Python 解释器,该解释器可能是您安装的macports并且已matplotlib安装的解释器。
macports
以下是可能发生的情况及其解决方法的细分:
/opt/local/bin/python
/usr/bin/python``matplotlib``ImportError
您可以在 shebang 中指定 Python 解释器的确切路径(#!/usr/bin/python这是默认值,它是系统 Python)。您需要将其更改为已matplotlib安装的 Python 版本。
#!/usr/bin/python
python
which python
它可能会返回类似的内容/opt/local/bin/python(或 MacPorts 安装它的任何位置)。
#!/opt/local/bin/python
这将确保当您运行时./plot_test.py,它使用具有所需库的正确的 Python 解释器。
一个好的做法是使用虚拟环境来管理 Python 包。这样,您就可以确保所有必需的包(包括matplotlib)都可以在专用环境中使用。
设置方法如下:
virtualenv
sudo port install py27-virtualenv
virtualenv venv
source venv/bin/activate
pip install matplotlib
您可以修改$PATH以确保matplotlib默认使用已安装的 Python 解释器。将 MacPorts Python 解释器添加到您的路径:
$PATH
.bash_profile
.zshrc
nano ~/.bash_profile
export PATH="/opt/local/bin:$PATH"
source ~/.bash_profile
现在,当您运行时./plot_test.py,它将使用正确的 Python 解释器。
出现此问题的原因是系统默认的 Python 未matplotlib安装。您可以通过以下方式修复它: