Installing Python 3.0 Alongside an Existing Python
With the recent release of Python 3.0 final, I've had a crazy itch that needed to be scratched. That itch, my friends, was to do a write-up of how to install Python 3.0 alongside my existing Python 2.5.2 installation without borking things up. The reason I thought it would be useful is that I'm running a Debian-based distribution of Linux called sidux right now, and neither Python 2.6 nor Python 3.0 are in the package repositories. I assume that Ubuntu and other Debian-based distributions might be the same way, and that there are others like me who would like to tinker with these new releases.
Just before attempting to install Python 3.0 on my computer, I started getting ready to write this article. Before I knew it, Python 3.0 was installed on my system, and I had no notes to share with you! That is how stinkin easy it is to install Python 3.0 without interfering with an existing install. I mentioned to a good friend that I wasn't sure the process was worth writing an article because it was so simple, but he encouraged me to carry on. Thanks bro.
So, without any further ado, here is what I did to install Python 3.0 from source alongside my Python 2.5 installation:
Note: If you're using a Mac or Windows, you should be able to simply install the packages for your platform to accomplish this same feat. Once the packages are in the repositories it will be just as easy for Linux.
Download Python 3.0 from the official Web site: http://python.org/download/releases/3.0/
I downloaded it this way:
$ wget http://python.org/ftp/python/3.0/Python-3.0.tar.bz2Unpack the archive:
$ tar jxf Python-3.0.tar.bz2Descend into the newly extracted Python-3.0 directory:
$ cd Python-3.0
Install libreadline-dev. This step is necessary for the arrow keys to work, as pointed out by jazevec below in the comments. If you are on a Debian-based system, you can execute a command such as this:
$ sudo apt-get install libreadline-devOther distributions may have different package names, such as readline-dev. If neither one of those package names work for your distribution, try searching your package manager for readline and install the development files. Alternatively, you should be able to manually install what you need by installing readline itself.
Configure Python 3.0 for your computer:
$ ./configureCompile Python 3.0:
$ makeUPDATE (9 Dec): Depending on your setup, you may or may not see a message such as this after executing the make command (thanks again to jazevec for pointing out that this can happen):
Failed to find the necessary bits to build these modules: _dbm _gdbm _hashlib _sqlite3 _ssl _tkinter bz2 zlib To find the necessary bits, look in setup.py in detect_modules() for the module's name.
If you need any of those capabilities, you should install the appropriate development files for the missing module(s). For example, above, we installed the libreadline-dev package. To resolve the missing module problem for each one listed above (except _dbm because it's apparently borked on Debian right now... possibly other distros too), install these packages:
- tk-dev to satisfy _tkinter
- libsqlite3-dev to satisfy _sqlite3
- libbz2-dev to satisfy bz2
- zlib1g-dev to satisfy zlib
- libssl-dev to satisfy _ssl and _hashlib
- libgdbm-dev to satisfy _gdbm
Install Python 3.0:
$ sudo make installor:
# make installTest Python 3.0:
$ python3.0 Python 3.0 (r30:67503, Dec 5 2008, 11:05:45) [GCC 4.3.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> print 'Hi' File "<stdin>", line 1 print 'Hi' ^ SyntaxError: invalid syntax >>> print('Hi') Hi >>>
Make sure that your old version of Python is still around:
$ python Python 2.5.2 (r252:60911, Sep 29 2008, 21:15:13) [GCC 4.3.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> print 'Hi' Hi >>>
Rejoice
That's about it folks! Extremely simple and fast, compared to what it could have been.
If you find yourself in a situation where you don't have access to sudo or straight root-level access, you can install Python 3.0 locally by doing something like this:
Configure Python 3.0 for your computer:
$ ./configure --prefix=$HOME/local/
Compile Python 3.0:
$ makeInstall Python 3.0:
$ make installNot that I omitted the sudo part of the command here.
Symlink to Python 3.0, assuming you have a bin/ directory in your home directory (i.e. /home/[yourusername]/bin), and that said bin directory is on your PATH:
$ ln -s ~/local/bin/python3.0 ~/binTest your locally installed Python 3.0:
$ python3.0or, if your local bin directory isn't on your PATH:
$ ~/bin/python3.0Do the dance.
Please comment with any problems you find with this process, or any additional advice you can offer to newbies!