New submission from Vinay Sajip <vinay_sa...@yahoo.co.uk>:

At present, packaging support for scripts on Windows is the same as for any 
other system. This is sub-optimal, for the following reasons:

1. Windows doesn't support #! lines to find the correct executable for a 
script. On a system with multiple Python versions and scripts written for 
particular versions, support for locating the correct needs to be present.
2. Windows has two types of executables - console applications and GUI 
applications - and Windows users expect correct usage of either python.exe or 
pythonw.exe, depending on the individual script being run.

Setuptools (and therefore Distribute) support these requirements by installing 
a script "demo", on Windows, as "demo.exe" and "demo-script.py" (or 
"demo-script.pyw"), where demo.exe is a stock Windows executable (either 
console or GUI) which invokes the appropriate Python executable on the 
"demo-script.py[w]" file.

Packaging should provide a similar mechanism, which can be implemented very 
simply by changing the build_scripts command appropriately. It should work like 
this:

1. When writing a script, the developer simply provides a #!line as normal, but 
if intended for deployment on Windows, ensures the executable is named as 
"pythonw" rather than "python". The script should have no extension, as would 
be for case for a script Linux or OS X.
2. On Windows, the build-scripts command will build the script as it does now - 
substituting the correct executable for the #! line - but on Windows, instead 
of writing the script out as e.g. "demo", it will write it as either 
"demo-script.py" or "demo-script.pyw" (depending on whether the #! line had 
"pythonw" in it or not), and will also write a stock executable (either console 
or GUI, depending) with the corresponding name "demo.exe".
3. Since install_scripts just copies files from the build directory, there 
shouldn't need to be any changes here.

The stock executables can be the same as Distribute uses (setuptools/cli.exe 
and setuptools/gui.exe), if there is no licensing (or other) issue with having 
them in Python. If there is such an issue, they can be written from scratch to 
do the same job (it's just one C file).

I have this working in the pythonv branch, and if this feature request is 
accepted then I can work up a patch with test and doc changes. (The 
build_scripts changes are quite straightforward.)

----------
assignee: tarek
components: Distutils2, Library (Lib)
messages: 138896
nosy: alexis, eric.araujo, tarek, vinay.sajip
priority: normal
severity: normal
status: open
title: Packaging should provide better support for executable scripts on Windows
type: feature request
versions: Python 3.3

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue12394>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to