"non central" package management

Roy Smith roy at panix.com
Wed Nov 28 05:21:48 CET 2012


In article <8ea52e1b-2e02-40b2-8ce0-fcce7fc2ef20 at googlegroups.com>,
 Miki Tebeka <miki.tebeka at gmail.com> wrote:

> Greetings,
> 
> The usual package mangers (easy_install, pip ...) install packages in one 
> central location.
> 
> I'm looking for a solution that will allow every project (which run on the 
> same machine) use it's own packages and versions of packages. (Context - 
> we're running several applications on the same machine, and can't test 
> *everything* when we update a package. Also these applications might ship to 
> other machines to run - via hadoop streaming).

You want virtualenv.  Use pip to install packages, and they'll go into 
your (per-project) virtualenv.

> 2. Have a "lib" directory in each application with versioned packages (we use 
> something like that with svn:externals for version management).

What we do is run "pip freeze > requirements.txt" and check that into 
version control.  When we deploy, we create a new virtualenv, then do 
"pip install -r requirements.txt".

For hadoop jobs that we run on EMR under mrjob, we have the virtualenv 
setup in the bootstrap script.



More information about the Python-list mailing list