在Mac上使用pip安装matplotlib时出现错误

7
当我执行时

pip install matplotlib --upgrade --user

我没有收到任何错误信息,但是我的程序运行失败了。
Traceback (most recent call last):
  File "forest.py", line 22, in <module>
    matplotlib.style.use('ggplot')
AttributeError: 'module' object has no attribute 'style'

当我尝试升级matplotlib而没有使用--user选项时,我遇到了以下错误。
$ pip install matplotlib --upgrade 
Collecting matplotlib
  Using cached matplotlib-1.5.2-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
Requirement already up-to-date: cycler in /Users/vangapellisanthosh/Library/Python/2.7/lib/python/site-packages (from matplotlib)
Collecting pyparsing!=2.0.0,!=2.0.4,!=2.1.2,>=1.5.6 (from matplotlib)
  Using cached pyparsing-2.1.8-py2.py3-none-any.whl
Collecting pytz (from matplotlib)
  Using cached pytz-2016.6.1-py2.py3-none-any.whl
Collecting numpy>=1.6 (from matplotlib)
  Using cached numpy-1.11.1-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
Collecting python-dateutil (from matplotlib)
  Using cached python_dateutil-2.5.3-py2.py3-none-any.whl
Collecting six (from cycler->matplotlib)
  Using cached six-1.10.0-py2.py3-none-any.whl
Installing collected packages: pyparsing, pytz, numpy, six, python-dateutil, matplotlib
  Found existing installation: pyparsing 2.0.1
    DEPRECATION: Uninstalling a distutils installed project (pyparsing) has been deprecated and will be removed in a future version. This is due to the fact that uninstalling a distutils project will only partially uninstall the project.
    Uninstalling pyparsing-2.0.1:
Exception:
Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/pip-8.1.2-py2.7.egg/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/Library/Python/2.7/site-packages/pip-8.1.2-py2.7.egg/pip/commands/install.py", line 317, in run
    prefix=options.prefix_path,
  File "/Library/Python/2.7/site-packages/pip-8.1.2-py2.7.egg/pip/req/req_set.py", line 736, in install
    requirement.uninstall(auto_confirm=True)
  File "/Library/Python/2.7/site-packages/pip-8.1.2-py2.7.egg/pip/req/req_install.py", line 742, in uninstall
    paths_to_remove.remove(auto_confirm)
  File "/Library/Python/2.7/site-packages/pip-8.1.2-py2.7.egg/pip/req/req_uninstall.py", line 115, in remove
    renames(path, new_path)
  File "/Library/Python/2.7/site-packages/pip-8.1.2-py2.7.egg/pip/utils/__init__.py", line 267, in renames
    shutil.move(old, new)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 302, in move
    copy2(src, real_dst)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 131, in copy2
    copystat(src, dst)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 103, in copystat
    os.chflags(dst, st.st_flags)
OSError: [Errno 1] Operation not permitted: '/var/folders/7j/19zzrqpn5dl6ghw1pms6k2m80000gp/T/pip-FEDiKY-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pyparsing-2.0.1-py2.7.egg-info'

我该怎么解决这个问题?
3个回答

19

尝试

sudo pip install matplotlib --upgrade --ignore-installed six

使用 pip 在 OS X El Capitan 或更高版本上安装某些软件包会导致出现这个通用问题。希望这个解决方案对你有用,就像对我一样。


另外,请确保您升级到 matplotlib 版本 1.4 或更高版本,因为 styles 功能是相对较新的功能。您可以通过输入 matplotlib.__version__ 来检查此版本。 - kendama
谢谢!这个命令帮了很大的忙。我认为 six 组件可能不完整,所以在升级时我们可以忽略它。 - Johnny

1

在Kendama的回答基础上。我在安装mitmproxy时在macOS上遇到了同样的问题(卸载pyparsing-2.0.1时出现异常)。以下代码为我解决了这个错误。

sudo pip install mitmproxy --upgrade --ignore-installed six

我想提醒一下,这个问题不仅与matplotlib相关,任何软件安装时都可能发生。


1

看起来你的第一个错误是因为你在 matplotlib 中搜索 style 而不是 matplotlib.pyplot。通常情况下,它仍应该能够正常工作,但请尝试以下更改。

尝试更改为:

matplotlib.style.use('ggplot')

通过在代码开头添加以下内容:
import matplotlib.pyplot as plt

然后使用:

plt.style.use('ggplot')

对于第二个错误,pip尝试卸载pyparsing但某种原因没有权限。如果您是管理员,请尝试使用以下命令:

sudo pip install matplotlib --upgrade

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