Why site-packages?

Ian Kelly ian.g.kelly at gmail.com
Tue Jul 3 23:04:17 CEST 2012

On Tue, Jul 3, 2012 at 2:40 PM, Dan Stromberg <drsalists at gmail.com> wrote:
> Why is it that so much 3rd party python code gets installed to
> site-packages?

Because that's what site-packages is for?

> Even for things that are almost certainly going to be used by a single
> application?
> Even for things you might only use once?
> Even for things that might require one version for one app, and another
> version for another app?

For these types of uses, I suggest using virtualenv if you don't want
to pollute your site-packages.  Or Python 3.3 with the new built-in
virtual environment option.

> Why not stash an application's python modules in /usr/local/lib/[appname],
> and stash a little frontend in /usr/local/bin that adds
> /usr/local/lib/[appname] to sys.path?

What if you then write an application that you find needs two of these
libraries?  You write yet another frontend that adds both of them to

> Here's a thread on stackoverflow today asking why python starts up so
> slowly, and making it clear that this is because so much stuff ends up in
> site-packages:
> http://stackoverflow.com/questions/11318028/is-it-safe-to-use-pythons-s-option

I think you may be misunderstanding that thread.  They're saying that
starting Python with the -S option (i.e. not automatically importing
the site module) significantly cuts down on Python's startup time.
The site module has to process any .pth files in the site-packages,
but apart from that, I think the actual amount of stuff in
site-packages should be irrelevant.  Nothing in site-packages is
actually imported or otherwise processed until the application
requests it.  You could have a completely empty site-packages, or you
could have 20 gigs of third-party packages, and the time to import
site would be basically the same.

More information about the Python-list mailing list