I use virtualenvwrapper to create Python virtual environments. I have a couple of functions in my ~/.bash_profile
that make it even easier to use:
if [ -f $(brew --prefix)/bin/virtualenvwrapper.sh ]; then . $(brew --prefix)/bin/virtualenvwrapper.sh; function mkvirtualenvhere() { mkvirtualenv "$@" "${PWD##*/}" ; setvirtualenvproject; } function workonthis() { workon "${PWD##*/}" ; } fi
This is for OS X and homebrew. You’ll need something slightly different for your flavor of Linux.
mkvirtualenvhere
creates a new virtualenv with the same name as the current directory, and I use it like this:
$ cd ~/src $ git clone https://github.com/jwhitlock/drf-cached-instances.git $ cd drf-cached-instances $ mkvirtualenvhere $ pip install -r requirements.txt
The virtualenv is called “drf-cached-instances”, and I can start work two ways. The standard way is:
$ workon drf-cached-instances
This will activate the virtualenv and change the current directory to ~/src/drf-cached-instances
, because of the setvirtualenvproject
call.
The second way is:
$ cd ~/src/drf-cached-instances $ workonthis
This activates the virtualenv that shares the name of the current directory. Often, I think I am just looking at a project, using ack to explore the code, but then switch to running the project so I can experiment in an interactive prompt.
Another tool to help this workflow is GitHub’s hub, which can be faster than git for working with GitHub hosted projects. I often use it for code review work, but forget to use it when cloning a new project.