6

I'm trying to upgrade the numpy library on macOS, but pip doesn't seem to have sufficient permissions to delete numpy. Running `pip install --upgrade pip gives me this traceback:

➜  Desktop sudo -H pip install --upgrade numpy
Collecting numpy
  Using cached numpy-1.11.3-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
Installing collected packages: numpy
  Found existing installation: numpy 1.8.0rc1
    DEPRECATION: Uninstalling a distutils installed project (numpy) 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 numpy-1.8.0rc1:
Exception:
Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/Library/Python/2.7/site-packages/pip/commands/install.py", line 342, in run
    prefix=options.prefix_path,
  File "/Library/Python/2.7/site-packages/pip/req/req_set.py", line 778, in install
    requirement.uninstall(auto_confirm=True)
  File "/Library/Python/2.7/site-packages/pip/req/req_install.py", line 754, in uninstall
    paths_to_remove.remove(auto_confirm)
  File "/Library/Python/2.7/site-packages/pip/req/req_uninstall.py", line 115, in remove
    renames(path, new_path)
  File "/Library/Python/2.7/site-packages/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: '/tmp/pip-21oX9d-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy-1.8.0rc1-py2.7.egg-info'

So apparently pip is having trouble deleting /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy-1.8.0rc1-py2.7.egg-info. Trying to delete this file manually in finder gives me this error:

“numpy-1.8.0rc1-py2.7.egg-info” can’t be modified or deleted because it’s required by OS X.

How can I solve this? (Using the builtin numpy isn't an option because tensorflow, a package I need, needs the newest version).

hiy
  • 449
  • 5
  • 15
  • 3
    A few options I can think of - run the `pip` command as a root; install it via `homebrew`. Install it into a virtualenv - I cant really see a reason to have it installed globally. – yedpodtrzitko Jan 14 '17 at 15:32
  • 1
    OS X protects default system Python installation, even from modifications from root. @yedpodtrzitko's comment is actually an answer. Install [homebrew](http://brew.sh/), then `brew install python`, then `brew install numpy`. Update paths to use homebrew Python as default, following recommendation from this [answer](http://stackoverflow.com/questions/5157678/python-homebrew-by-default) – void Jan 14 '17 at 17:26
  • @void - thanks so much, this is exactly what I needed. – hiy Jan 14 '17 at 18:46

2 Answers2

15

Was facing the same issue

sudo pip install --ignore-installed numpy

Himanshu Tiwari
  • 176
  • 2
  • 5
  • 1
    This maybe installs it, but "pip list" still shows the ancient Mac-provided numpy version. – BjornW Mar 20 '18 at 14:57
0

For me on macOS High Sierra the below worked well:

sudo pip install --ignore-installed numpy