Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Multiple versions of python when installing a package with aptitude

On a lab machine where I can't just go clobbering things, there appears to be more than one version of python installed.

If I python --version I see 2.7.1.

I've installed numpy via "apt-get install numpy" and it says it is installed, but when I try to import it it isn't found.

When I do a find on the machine for numpy I see it in the /usr/lib/python2.5/site-packages/numpy folder. I assume this is the problem... that apt-get put it in the 2.5 version instead of the 2.7.

How do I resolve this? Is there a way to tell apt-get which python I'm talking about when I do an install? Or do I abandon aptitude and use pip or something?

like image 509
zsimpson Avatar asked Feb 21 '23 18:02

zsimpson


1 Answers

If you want to use multiple versions of python on one machine, you should investigate virtualenv.

virtualenv is a tool to create isolated Python environments.

The basic problem being addressed is one of dependencies and versions, and indirectly permissions. Imagine you have an application that needs version 1 of LibFoo, but another application requires version 2. How can you use both these applications? If you install everything into /usr/lib/python2.7/site-packages (or whatever your platform's standard location is), it's easy to end up in a situation where you unintentionally upgrade an application that shouldn't be upgraded.

Or more generally, what if you want to install an application and leave it be? If an application works, any change in its libraries or the versions of those libraries can break the application.

Also, what if you can't install packages into the global site-packages directory? For instance, on a shared host.

In all these cases, virtualenv can help you. It creates an environment that has its own installation directories, that doesn't share libraries with other virtualenv environments (and optionally doesn't access the globally installed libraries either).

Here is a question with a similar solution.

In addition, I use virtualenvwrapper because I find it makes life a lot easier to manage multiple environments.

like image 177
hughdbrown Avatar answered Apr 28 '23 15:04

hughdbrown