views:

1527

answers:

4

Seems everyone recommends virtualenv for multiple python versions (on osx), but does it even work with python 3.0? I downloaded it, and it doesn't seem to.. And I don't really understand how it works, Can you 'turn on' on env at a time or something? What I want is to leave the system python 2.5 (obviously), and to have python 3.1.1 with subversion pygame to write my own stuff, and python 2.6 with normal stable pygame to use to run other things, like pygame games downloaded from pygame.org. Any help on how to accomplish that? Thanks.

OK I realized virtualenv is not what I'm looking for.

A: 

Not sure if I understood you correctly, but here goes :)

I don't know about OS X, but in Linux you can install both 2.6 and 3. Then you can either specify to use python25 or python3, or change the /usr/bin/python symlink to the version you want to use by default.

l3dx
Are you talking about without virtualenv?
Mk12
No, I'm talking about using multiple python versions. For what I know, virtualenv is used to work with dependencies of multiple versions, not multiple versions of python itself. But I may be wrong :-)
l3dx
ohh.. I wish there was a Python Preferences.app like Java Preferences.app ..
Mk12
+1  A: 

virtualenv is designed to create isolated environments of a Python environment. The trick to using it with multiple Python instances is to either install virtualenv into each of the Python versions you want to use it with, for example:

/usr/bin/easy_install-2.6 virtualenv
/usr/local/bin/easy_install virtualenv
sudo port install py26-virtualenv

or to invoke it with the intended Python version, for example:

/usr/bin/python2.6 virtualenv.py ENV
/usr/local/bin/python2.6 virtualenv.py ENV
/opt/local/bin/python2.5 virtualenv.py ENV

So, as such, it doesn't directly solve the problem (particularly acute on OS X) of which Python you want to work with. There are various ways to deal with that issue: use absolute paths to the intended Python (as in the above examples), define shell aliases, carefully manage the $PATH search order, among others.

At the moment, AFAIK, virtualenv is not supported with Python 3 because, among other things, setuptools (the magic behind easy_install) is not yet supported on Python 3, although there is work in progress towards a solution for that.

BTW, many people use Doug Hellman's virtualenvwrapper to simplify use of virtualenv.

Ned Deily
+2  A: 

Your use case doesn't actually need virtualenv. You just need to install several different Python versions.

That said, it is correct that virtualenv has not been ported to Python 3 yet. As it uses setuptools, it will need for the Python 3 port of Distribute to be finished. Help with this is welcome, join the [email protected] mailing list to do that. Even if you can't help developing the code (it's very difficult for being Python) help with testing is always welcome.

The lack of third party modules for Python 3 (setuptools and virtualenv being some of the more important ones) does mean that Python 3 is not ready for prime time yet, so unless you absolutely need Python 3, I'd recommend that you use 2.6 at the moment.

Lennart Regebro
I just like using the newest version, I just teach myself programming as a hobby, so It doesn't really matter to anyone else which version I use.
Mk12
So, for using with pygame, you think I should stick with 2.6?
Mk12
Yes, you should stick with 2.6.
Ned Deily
I'm not that advanced in programming, like I said, self-taught, but I might help if I can, it sounds interesting.
Mk12
Are you one of the core developers then?
Mk12
I don't know about "core", but otherwise yes. Yes, you should stick to 2.6 at the moment.
Lennart Regebro
+2  A: 

For me virtualenv3 works very well. I also have pypi.python.org/pypi/distribute installed. That also works with the mentioned www.doughellmann.com/docs/virtualenvwrapper/ . I've only tested that on Linux though.

Alien8
Now there is also virtualenv5http://pypi.python.org/pypi/virtualenv5/
Alien8