即使已经安装了Matplotlib,仍无法导入

3
我正在我的Mac(El Capitan,10.11.5)上运行一个Python示例程序。 我安装了默认版本的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 下,我安装了 Python 3.5,在路径 /usr/local/bin 下安装了 Python 2.7,而在路径 /usr/bin 下则是默认的 Python。
当我运行程序 from matplotlib import pyplot as plt 并尝试使用它时,会出现以下错误:

ImportError: No module named matplotlib

我认为问题在于 matplotlib 已经安装在了 Python 3.5 的 site-packages 中。我该如何解决这个问题呢?
谢谢!

请检查 python -m site,我猜测 python 命令运行的环境与 pip 所认为的不同。 - miraculixx
你可以使用 ls 命令进入 Python 的 site-packages 目录,确保准确查找到它的安装位置。 - OneCricketeer
进一步补充@miraculixx所说的,使用pip --version不仅会告诉您Pip版本,还会告诉您它配置了哪个Python安装程序。 - FMaz
而且 which pip 还会告诉你它的位置。 - JL Peyret
1个回答

1
我安装了默认版本的Python(2.6),并在此基础上安装了Python 2.7和3.5。我需要在2.7版本上使用matplotlib。
通常这不是问题,但您需要确保Python环境没有混淆。
我认为问题在于matplotlib被安装在Python 3.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. 在新的虚拟环境中重新安装软件包

激活环境并使用以下命令将所需的软件包重新安装到项目的环境中

# 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库:
python -c 'import matplotlib; print matplotlib'
<module 'matplotlib' from '/path/to/python/site-packages/matplotlib/__init__.pyc'>

3. 给自己一个休息

为了简化使用虚拟环境,可以尝试使用 virtualenvwrapper。它会在你的系统中添加一些命令来简化虚拟环境的处理,例如:

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接