Background
I use virtualenv (actually virtualenvwrapper) for several python projects (nikola websites, django sites, and pure python projects). One of my virtualenv environments was created as a Python 2.7 environment and I needed to upgrade it to Python 3.x.
To upgrade a virtualenv should be simple as its “virtual”! Most articles I found said the easiest approach was to create a new virtualenv, freeze the old env, copy files from old environment to new and then pip install from freeze; however, I thought it should be easier.
Details
My approach is simple: create a new virtualenv over the top of the existing virtualenv. To do so:
- assuming your virtualenv name is “projectX” and you are upgrading to python3.4
- go to the parent directory of your virtualenv directory
- make sure your virtualenv is not active (e.g.
deactivate) - now is a good time to backup your project:
tar -cjf projectX.tar.bz2 projectX/) - upgrade / overlay your virtualenv with a “new” virtualenv with the version of pyton you need:
mkproject --force --python=/usr/bin/python3.4 projectX - if for some reason you did not
deactivateprior to overlaying your virtualenv you will need todeactivateand thenactivatebefore your environment will see the new python version
Notes
- I received a
Python.h No such file or directoryerror complaining about gcc - the issue was I did not have the dev files installed for python3, (install with: apt-get install python3-dev)