Windows web based installation of multiple packages

(I normally work from Linux, but have a test WinXP computer and my old WinNT4 with Visual Studio 6 should that turn out to be useful.) It is quite easy to use the bdist_wininst command to create a Windows installer executable. A browser click on a link to the .EXE file allows for software installation, but easy_install is not run and the packages listed in setup.install_requires are not installed. Is there a way to force the windows installer to run easy_install? If I were to create an egg, is there a content-type heading that would cause easy_install to process the egg? (much like application/vnd.ms-excel) I could not find an easy_install entry in the registry in my test WinXP computer after installing setuptools. I thought one of these approaches would be fairly easy, but googling and experimenting have gotten me nowhere. -- Lloyd Kvam Venix Corp

It is quite easy to use the bdist_wininst command to create a Windows installer executable. A browser click on a link to the .EXE file allows for software installation, but easy_install is not run and the packages listed in setup.install_requires are not installed. Is there a way to force the windows installer to run easy_install?
If I were to create an egg, is there a content-type heading that would cause easy_install to process the egg? (much like application/vnd.ms-excel) I could not find an easy_install entry in the registry in my test WinXP computer after installing setuptools.
I thought one of these approaches would be fairly easy, but googling and experimenting have gotten me nowhere.
bdist_wininst is designed to install a python package, not to install a python "application" which has external dependencies. You may like to consider py2exe, which is designed to create a stand-alone executable from your python app - but even then, eggs etc are not processed - you are expected to have all relevant packages installed on your dev box, and they are packaged inside the app. Mark

On Mon, 2007-08-06 at 09:08 -0500, Mark Hammond wrote:
It is quite easy to use the bdist_wininst command to create a Windows installer executable. A browser click on a link to the .EXE file allows for software installation, but easy_install is not run and the packages listed in setup.install_requires are not installed. Is there a way to force the windows installer to run easy_install?
If I were to create an egg, is there a content-type heading that would cause easy_install to process the egg? (much like application/vnd.ms-excel) I could not find an easy_install entry in the registry in my test WinXP computer after installing setuptools.
I thought one of these approaches would be fairly easy, but googling and experimenting have gotten me nowhere.
bdist_wininst is designed to install a python package, not to install a python "application" which has external dependencies. You may like to consider py2exe, which is designed to create a stand-alone executable from your python app - but even then, eggs etc are not processed - you are expected to have all relevant packages installed on your dev box, and they are packaged inside the app.
Thanks for the reply. I have deadlines to meet, so I guess I'll be taking the py2exe approach for now. However, I'm still interested in setting up the associations so that an HTTP content-type header for .egg files could be associated with easy_install. I assume if it were trivial it would have been done by now. http://mail.python.org/pipermail/distutils-sig/2006-September/006734.html has some thoughts from Phillip Eby about automatic execution of easy_install. I will tackle getting my Linux computers to handle an egg/easy_install content-type and then figure out the patches for setuptools so that this can be automatic. Hopefully the Windows situation will be reasonably parallel to Linux. Suggestions and advice are welcome. -- Lloyd Kvam Venix Corp

However, I'm still interested in setting up the associations so that an HTTP content-type header for .egg files could be associated with easy_install. I assume if it were trivial it would have been done by now.
But wouldn't this defeat one of the key features of eggs - that you do *not* need to manually locate them and install them? eggs allow you to install a Python program that has external dependencies, and have those external dependencies resolved automatically. If you really do need to manually locate and install a package, you may as well locate and install the bdist_wininst executable, or rpm, or whatever is "native" for the platform in question. I guess if some packages are *only* available as an egg it might make some sense - but I'm yet to get the "egg" religion to the point where I see having an egg as replacing all other distribution formats, so people who do attend that church may beg to differ... Mark

At 09:55 AM 8/8/2007 -0500, Mark Hammond wrote:
However, I'm still interested in setting up the associations so that an HTTP content-type header for .egg files could be associated with easy_install. I assume if it were trivial it would have been done by now.
But wouldn't this defeat one of the key features of eggs - that you do *not* need to manually locate them and install them?
Not really. I see the usefulness of this as being able to simply click on a download link in the Cheeseshop after discovering a package's existence (e.g. by reading the Cheeseshop RSS feed). Of course, I personally have a shell window open at all times, so it's no big deal for me to switch over and type "easy_install foo", so defining support for quick-download launching hasn't been a high priority for me.

On Wed, 2007-08-08 at 09:55 -0500, Mark Hammond wrote:
However, I'm still interested in setting up the associations so that an HTTP content-type header for .egg files could be associated with easy_install. I assume if it were trivial it would have been done by now.
But wouldn't this defeat one of the key features of eggs - that you do *not* need to manually locate them and install them?
In my case, someone found my package on a web site and wants to use it. She's not a developer, but simply wants to click and install. My thinking is that an egg describes my package and all of its dependencies. If clicking on the egg ran easy_install, the dependencies would get resolved and missing packages would be installed.
eggs allow you to install a Python program that has external dependencies, and have those external dependencies resolved automatically. If you really do need to manually locate and install a package, you may as well locate and install the bdist_wininst executable,
But then I need to bundle all the dependencies. What if some were already installed? What if I'm inadvertently downgrading packages because I missed a release?
or rpm, or whatever is "native" for the platform
yum (or equivalent) would handle the download and installation of the dependencies specified in the rpm. I would not need to bundle additional packages in my rpm.
in question.
I guess if some packages are *only* available as an egg it might make some sense - but I'm yet to get the "egg" religion to the point where I see having an egg as replacing all other distribution formats, so people who do attend that church may beg to differ...
We are probably in agreement about preferring the native packaging. For Linux folks, I'd provide an rpm and expect their packaging system (yum, apt-get, or whatever) to resolve everything. Is there any kind of Windows package manager that would resolve msi dependencies? eggs provide a cross-platform distribution mechanism for Python code. Bypassing the platform package manager is an unfortunate side effect of being cross-platform. People can convert an egg to their preferred package format. -- Lloyd Kvam Venix Corp
participants (3)
-
Lloyd Kvam
-
Mark Hammond
-
Phillip J. Eby