Skip to content

Instantly share code, notes, and snippets.

@DownRangeDevOps
Created May 4, 2016 06:11
Show Gist options
  • Save DownRangeDevOps/c693d2ac551c576aba5c7bce567a3bab to your computer and use it in GitHub Desktop.
Save DownRangeDevOps/c693d2ac551c576aba5c7bce567a3bab to your computer and use it in GitHub Desktop.
Fix Python on OSX

Wrestling with Python on OS X (Yosemite)

Source: Wrestling with python on OSX Yosemite

Mar 1, 2015 By zachmccormick

So I have been using my Macbook Pro for about 3 years for various projects, mostly in Java/Android, some Node here and there, I’ve installed Ruby and RVM for whatever reason once or twice, and I probably have 8 version of Python installed. I started to work on an open source Python project that I’d been working on (started on a different computer), and noticed some funky things about my Python install on my MBP. I was constantly getting errors like the following when I tried to install virtualenv and virtualenvwrapper:

IOError: [Errno 13] Permission denied: ‘/usr/local/bin/virtualenv’

Obviously at some point in time, over a few version of OSX and lots of Homebrewing, I’d screwed up my permissions. Let’s fix it!

First I went ahead and did a ‘brew update && brew upgrade’. I then did a brew uninstall python3 and brew uninstall python just to clean everything up – that way I’d only have the OS X Yosemite default system Python installed. Next I reinstalled Python (2.7.9 when I did it) with brew install python –framework. Homebrewed Python comes with pip, so I did pip list. Hmmm…. that’s funny! I have a ton of crap listed as installed, but I definitely just did a clean install.

It turns out that pip will look in a number of different folders, /Library/Python/2.7/site-packages/ being one of them. All of the packages I had installed previously using the system Python, such as awscli and goobook, were all sitting here. The Homebrewed version of pip is listing them though. This definitely isn’t what I want…

I did an ls in the /Library/Python/2.7/site-packages/ folder and did a sudo pip uninstall xyz for every folder such as xyz-1.2.3 in that directory, excluding pip and setuptools. I then did a sudo rm -rf for the pip and setuptools folders in this directory (just to make sure they don’t cause problems). This left me with only easy_install.py and pkg_resources.py in that directory.

Now let’s install virtualenv. pip install virtualenv and pip install virtualenvwrapper now both work perfectly without needing to use sudo in front, because pip is attempting to install everything and link against existing packages in /usr/local/lib/python2.7/site-packages instead of in /Library/Python/2.7/site-packages. Yay! That’s exactly what we want. I reinstalled awscli and other Python tools that I had gotten used to using, and pip installed them all correctly into the Homebrewed Python’s site-packages folder and linked all executables to /usr/local/bin. Exactly what we want to make it modular and manageable, and especially not to require sudo. Great success!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment