19

Running Python 2.7.3, installed with HomeBrew, on a mac.

Installed several packages using PIP, including virtualenv. (Using virtualenv as an example, but NONE of the packages work.)

When I try to run them in terminal, it fails as follows:

$ virtualenv venv --distribute
-bash: virtualenv: command not found

Alternatively:

$ python virtualenv.py venv
/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python: can't open file 'virtualenv.py': [Errno 2] No such file or directory

A few other points that may help:

$ which python
/usr/local/bin/python
$ pip freeze
MySQL-python==1.2.4
...
virtualenv==1.8.4
$ echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin
$ echo $PYTHONPATH
/usr/local/lib/python2.7/site-packages:

By default, the $PYTHONPATH was blank, I changed it in .bash_profile (didn't help). VirtualEnv does exist at that path. I also tried adding this path to the .profile $path, but that didn't help either, so I removed it.

On the HomeBrew Python page it seems to somewhat relate to this, but I am new to Python, and can't figure it out. Have spent some hours DuckDuckGo'ing with nothing gained.

Any help would be greatly appreciated.

EDIT: Updated to reflect actual usage.

SamGoody
  • 13,758
  • 9
  • 81
  • 91
  • 2
    If `$ virtualenv venv` does not work, try `$ python -m virtualenv venv` that does not count on your `$PATH` to find `virtualenv` binary. – Hugo Lopes Tavares Feb 03 '13 at 19:44
  • @HugoTavares I'm getting: /usr/bin/python: No module named virtualenv – napstercake Jul 29 '15 at 18:50
  • @RicardoGonzales: that means you don't have virtualenv installed on that specific python. You can install virtulaenv with pip or from source; check the documentation: https://virtualenv.pypa.io/en/latest/installation.html – Hugo Lopes Tavares Jul 29 '15 at 19:25
  • @HugoTavares I've installed virtualven with pip. Please if you have the time see my question. http://stackoverflow.com/questions/31707557/virtualvenv-command-not-found – napstercake Jul 29 '15 at 20:15

3 Answers3

34

The problem was that I had not added Python to the system $PATH.

At the end of the brew install it says (viewable by typing brew info python):

Executable python scripts will be put in:  
   /usr/local/share/python
so you may want to put "/usr/local/share/python" in your PATH, too.

So, simply had to open .profile and paste it in, and all packages work.

Much thanks to MistyM on the Brew IRC channel for pointing that out!

SamGoody
  • 13,758
  • 9
  • 81
  • 91
  • Spot on! This was a big help. Thank you so much. – Jordan Dea-Mattson Apr 20 '13 at 06:31
  • 2
    Or add it to your `.bash_profile` if you don't have any `.profile` – adriendenat May 07 '13 at 12:23
  • 2
    Can you elaborate on how you add the path to your .bash_profile – ExperimentsWithCode Jan 23 '14 at 17:58
  • .bash_profile is a file that is checked by Bash upon startup for (among other things) changes to the $PATH. By default, it does not exist, so you will likely have to create it, by opening the terminal and typing: `touch ~/.bash_profile` and pressing enter. This means "create the file in my local home directory". (Note: You won't see it in finder as it's hidden, since the name starts with a dot.) You can edit that file by typing in terminal: `open ~/.bash_profile` which will open the file for editing in your default program, which is probably TextEdit. If you get a blank page, it's a good sign. – SamGoody Aug 17 '15 at 10:35
  • Once you have .bash_profile open, add the following line and press save: `export PATH="/usr/local/share/python:$PATH"`. This rewrites path to include the path to Python, which is what you need. Be aware though that in Mac, Bash also checks for .profile and .bashrc on the local user level. On the global level, it checks /etc/profile, /etc/bashrc and /etc/bash_profile [and probably many others]. – SamGoody Aug 17 '15 at 10:50
  • On second thought, it seems that bash also checks the global /etc/paths. So ignore what I wrote in the other comments, the easiest way to add brewed Python to PATH on a global level, assuming you have sudo privileges, is `sudo open /etc/paths` (if it doesn't exist, create it using touch as in last comment) and adding `/usr/local/share/python` on it's own line. You have to close and reopen terminal for changes to take affect. – SamGoody Aug 17 '15 at 10:55
0

Download virtualenv.py if your system does not provide virtualenv command:

curl -L -o virtualenv.py https://raw.github.com/pypa/virtualenv/master/virtualenv.py

First create your virtualenv folder:

 python virtualenv.py venv # venv <-- name of the folder

You need run virtualenv's activate in shell:

 . venv/bin/activate

or

 source venv/bin/activate

This fixes PYTHONPATH and PATH. You do this once per each shell session. Then python command will magically work :)

Now run pip, packages will be installed in venv.

More info (disclaimer, I am the author) http://opensourcehacker.com/2012/09/16/recommended-way-for-sudo-free-installation-of-python-software-with-virtualenv/

Mikko Ohtamaa
  • 82,057
  • 50
  • 264
  • 435
  • I'm not sure I understand - In your example above is YOURVIRTUALSERVER the one you referred to as venv? When I run the first line it errs out: $ python virtualenv.py venv; /usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python: can't open file 'virtualenv.py': [Errno 2] No such file or directory The ; represents a line break - I dont know how to put line breaks in comments on SO – SamGoody Jan 31 '13 at 23:46
  • So first you need to download virtualenv.py from here https://raw.github.com/pypa/virtualenv/master/virtualenv.py if "virtualenv" command cannot be installed on your system otherwise. The command to download on OSX from command line is above. – Mikko Ohtamaa Feb 01 '13 at 01:11
  • I also clarified other parts of the example – Mikko Ohtamaa Feb 01 '13 at 01:12
  • Thank you, but 1) Virtualenv is installed as demonstrated by the freeze command, and 2) There are several other PIP libraries I need as well, and all are installed but not accessible. Even if I found a solution for only VirtualEnv, it wouldn't help me that much – SamGoody Feb 01 '13 at 07:43
  • But is virtualenv activated after freeze or do you need to separately activate it? – Mikko Ohtamaa Feb 01 '13 at 13:48
  • I need to separately activate it. I was able to install it from the link you posted, but the other PIP packages were no go. – SamGoody Feb 06 '13 at 21:29
  • How about this 1) Create empty virtualenv 2) run pip after virtualenv is activated. It should use virtualenvized pip. – Mikko Ohtamaa Feb 07 '13 at 01:42
-1

Quick work flow on creating a Virtual env

$ mkdir awesomeapp 
$cd awesomeapp
$virtualenv venv --distribute
New python executable in venv/bin/python
Installing distribute.........done.
Installing pip................done.
$source venv/bin/activate
(venv)$python

One you CD into your directory that's when you're creating your virtual venv folder to store your path.

You'll now it's active when you see the (venv)

topherjaynes
  • 4,261
  • 1
  • 13
  • 4