[Distutils] EasyInstall: scripts
Bob Ippolito
bob at redivi.com
Mon May 30 01:43:54 CEST 2005
On May 29, 2005, at 3:46 PM, Phillip J. Eby wrote:
> At 03:56 PM 5/29/2005 -0500, Ian Bicking wrote:
>
>> I'm wondering how scripts should be handled by easyinstall --
>> right now
>> they pretty much get ignored. But I'm not sure how they should be
>> handled at all. Distutils has a couple rules, with --install-
>> scripts,
>> and --home (which uses ~/bin), and the normal rules... and then some
>> translation of those options to Windows. But none of those seems to
>> translate very well to easyinstall. Or eggs.
>>
>> I don't have any ideas myself on this. Except that the scripts
>> themselves are usually pretty dumb anyway, just thin wrappers that
>> fix
>> up sys.path, import a module, and call a function; so the status quo
>> could probably be improved upon anyway.
>>
>
> Yep. Like you, however, I'm not sure what to do about 'em. Take a
> look at
> the Unix versions of easy_install -- they're actually the regular .egg
> files, with a shell script cat'ted on at the front! (Somebody could
> probably pull the same trick with an .exe on Windows.)
>
> However, such "eggsecutables" aren't really a solution for packages
> with
> multiple scripts. I'm thinking maybe bdist_egg should include an
> EGG-SCRIPTS directory for the scripts, so that EasyInstall could
> pull them
> out and install them whenever you do a non --multi-version
> install. It
> would, however, also need to *uninstall* them when deactivating a
> current
> version, because otherwise they'd be for the wrong version.
>
> I had previously thought that we would move towards using "python -
> m" to
> run scripts in eggs; unfortunately this only works for unpacked
> eggs, not
> egg files.
>
> Of course, this all just overlaps the fact that distutils script
> installation is really only good for command-line utilities anyway,
> and
> even for those, Windows requires a fair bit of tweaking in order to
> be able
> to use them effectively at a non-Cygwin command line.
>
> It might help if there were some kind of metadata for scripts, like to
> indicate whether something is a command-line utility, a graphical
> application, etc. Then distutils could tweak the file extension
> and/or
> build a custom launcher for it (like Fredrik Lundh's exemaker for
> Windows)
> as appropriate for the platform. That information could then be
> added to
> EGG-INFO and/or EGG-SCRIPTS, and used by EasyInstall to do script
> installation and uninstallation.
Couldn't you change build_scripts and install_scripts when using
bdist_egg to instead put the script inside the egg somewhere, and the
installer would put scripts in the usual places that simply require
and then exec the real script?
-bob
More information about the Distutils-SIG
mailing list