Hai,

Welcome to the complexities of package management :)


wcyee wrote:
Hi,  When I am able to find and install a windows package distributed
as an exe file, I can just go to "Add & Remove Programs" in the
"Control Panel" and uninstall it.

That's what I call an OS package manager. My Linux one also handles dependencies (to install A, you first need to install B and C). Don't know whether your package manager does that too.

In general, you want exactly one package manager at your system imho. If you have more captains at the ship, they get confused. This is imho the basic reason why I think extending distutils is not good.

But if I have to run "python setup.py install", this is not possible.
I'm trying to understand why uninstall has not been provided.  After
all, setup.py has been available for many years now, right?

setup.py is an installer, not a package manager. Its only job is to install new packages. It does not take care of dependencies, it does not uninstall.

Is this because no one has contributed a patch or code?  Or is there
something inherent to python and packages that makes this a hard
problem (on non-windows platforms)?  It seems really odd that there is
no such thing after such a long time.

There are other variants around, some of them do dependency handling, I haven't yet seen one that does uninstall too.

I believe that extending the Python installer further brings you into the area of package management, something your system already provides at OS level. It is also better positioned there imho.

For the sake of argument, let's assume we have a Python package manager.

Now for example, if you install PyGTK (Python bindings to the GTK library) from the Python package manager, wouldn't you want it to install GTK too?
The latter however is not a Python package, so how do you do that?

Installing it from the Python package manager means you have two captains at your ship. If I later tell the OS package manager to install GTK, you'll have two GTK versions around (assuming it doesn't get confused of the gtk files that have appeared out of the blue without telling it about the new files). Alternatively, you can ask the OS package manager to install GTK from the Python package manager. However, the OS manager is then not aware why it is installed. When I browse through the installed packages, it says "GTK is not needed by any installed package", so I may be tempted to remove it. If I do, a) your PyGTK installation fails, and b) your Python package manager gets confused, since nobody told him that the GTK library was removed.

If you think this is not bad, think about how to update the GTK library to a new version, in particular when I also install a package that needs the new GTK version with the OS package manager.
Good luck.


To get around these problems, you either need (imho) to
a) have 1 OS package manager that manages everything, or
b) have several package manager that understand each other (but that seems like a complicated version of "a" to me, so it may not be viable).


Albert
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to