即使它已经安装,也无法导入matplotlib

时间:2016-07-22 21:07:08

标签: python macos matplotlib pip

我正在Mac上运行示例python程序(El Capitan,10.11.5)
我有一个默认版本的python安装(2.6),最重要的是我安装了python 2.7和3.5。我的2.7版本需要matplotlib。

我用pip(而不是pip3)安装它,我不知道为什么它安装在python 3.5上。

如果我输入pip list,这就是输出:

cycler (0.10.0)
Django (1.8.4)
matplotlib (1.5.1)
numpy (1.11.1)
pip (8.1.2)
pyparsing (2.1.5)
python-dateutil (2.5.3)
pytz (2016.6.1)
selenium (2.53.6)
setuptools (19.4)
six (1.10.0)
wheel (0.26.0)

which python输出:/usr/local/bin/python

我的道路是:

/usr/local/share/python3:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

/usr/local/share/python3中:我在/usr/local/bin:python 2.7中使用python 3.5,然后在/usr/bin中使用默认的python。

当我在我的程序from matplotlib import pyplot as plt中运行并尝试使用它时,我得到:

  

ImportError:没有名为matplotlib的模块

我认为问题是matplotlib安装在python3.5 site-package上。我怎么能解决这个问题?

谢谢!

1 个答案:

答案 0 :(得分:1)

  

我安装了python的默认版本(2.6),最重要的是我安装了python 2.7和3.5。我的2.7版本需要matplotlib。

这通常不是问题,但是你需要确保python环境不会混淆。

  

我认为问题是matplotlib安装在python3.5 site-package上。我怎么能解决这个问题?

<强> 1。使用python的virtualenv功能

我的建议是使用virtualenv *):

# for a python 3.5 environment
$ cd /path/to/<project with python 3>
$ PATH="/path/to/python3.x;$PATH" python -m venv myenv

# for a python 2.7 environment
$ cd /path/to/<project with python 2>
$ PATH="/path/to/python2.7;$PATH" virtualenv myenv

这将创建干净的每个项目python环境及其单独的site-packages。有了它,您可以处理安装了不同软件包或软件包版本的项目(甚至多个项目),而不会干扰它们。

那就是说,在你进一步移动之前,打开一个新的终端以确保所有路径都重置为干净状态。

<强> 2。将软件包重新安装到新鲜的virtualenv

激活环境并使用

将所需的软件包重新安装到项目的环境中
# assuming the list of packages is in /path/to/project/requirements.txt
$ cd /path/to/project
$ source myenv/bin/activate
$ pip install -r requirements.txt

一旦你完成了这个,你应该能够很好地导入matplotlib lib:

python -c 'import matplotlib; print matplotlib'
<module 'matplotlib' from '/path/to/python/site-packages/matplotlib/__init__.pyc'>

第3。给自己一个休息时间

要简化使用virtualenvs,请尝试virtualenvwrapper。这会为您的系统添加一些命令,以简化virtualenvs的处理,例如:

# create new environments
$ mkvirtualenv foo
# activate a particular environment
$ workon foo
# list packages in your environment 
$ lssitepackages 
(...)

*)请注意,Python 3提供venv包作为标准库的一部分,而Python 2.7要求您首先安装virtualenv包。