At 11:26 AM 7/14/2005 +0100, Paul Moore wrote: >On 7/13/05, Phillip J. Eby <[EMAIL PROTECTED]> wrote: > > At 03:00 PM 7/13/2005 +0100, Paul Moore wrote: > > >On 7/12/05, Paul Moore <[EMAIL PROTECTED]> wrote: > > >Given a Distribution object (maybe derived from a user's command line, > > >maybe from selection off a GUI) I can "uninstall" the Distribution by > > >simply removing the egg (file or directory). > > > > Make sure you *only* do this to a directory if it has a '.egg' extension; > > otherwise you could delete a package installed using "develop"! > >Hmm, I'm only looking on sys.path - I hadn't imagined that development >software would be added to the *default* sys.path...
By default, if you use "develop" on a package, it becomes part of the default sys.path; this makes sense on machines that are "development" machines. If you are developing on a machine that also has production software, you need to use a different staging area (--install-dir) for the develop command. This is easily set on a per-user or sitewide basis; in a shop making use of these tools, you'd probably do this (as root): setup.py setopt -g -c develop -o install_dir -s /somewhere/staging To set the sitewide staging area. Hmm, actually, it would probably make more sense to have user-specific staging areas, by making the default something like ~/staging. I should probably think about adding expanduser() support to a lot of setuptools' options. >But I take your point. Actually, as I'm only looking at these >utilities from the POV of managing site-packages, maybe I should just >strip out any entries from sys.path which aren't under that directory >(although I don't know if I can find that directory on Unix - on >Windows, it's under sys.(exec)prefix, but I don't know directory >structures under Unix so well). I'll have to check the source of >easy_install to see how it decides where to copy files *to* (in the >absence of user overrides...) There's a get_python_lib() function in distutils that I use. However, I've recently discovered that the situation on Mac OS X is more complex; users have a ~/Library/python2.X/site-packages directory as well. >Sorry - I'm doing find_distribution() on every entry in sys.path. What >I was getting at, is whether that process could miss any eggs which >easy_install may have put into site-packages. No; find_distributions(site_packages) would list everything installed in that directory, whether active or not, plus distributions for anything that was installed as a development link in site-packages. That is, even if *all* you call find_distributions() on is site-packages, it's still going to include distributions whose .path is elsewhere, and that's fine because you want to know about those anyway; just list them with a "(Development)" status or something in your output. _______________________________________________ Distutils-SIG maillist - Distutils-SIG@python.org http://mail.python.org/mailman/listinfo/distutils-sig