Multiple Versions of Python on Windows XP

Glenn Linderman v+python at
Fri Dec 5 08:34:01 CET 2008

On approximately 12/4/2008 5:29 AM, came the following characters from 
the keyboard of Colin J. Williams:
> Glenn Linderman wrote:
>> The equivalent of those commands is available via Windows Explorer, 
>> Tools / Folder Options, File Types, scroll-scroll-scroll your way to 
>> .py, Click Advanced, fiddle, copy paste apply, and other twaddle.  
> Yes, but what's needed is a further level of indirection.  Currently, 
> this allows .py to be associated with a particular editor.  It would 
> be great if there were some way of associating "Python.File", which is 
> created in the install process, with a particular editor.  Then, one 
> is left with associating "Python.File" with a given version of 
> Python.  Meanwhile, your suggestion provides a workaround.

Sure, it is possible to simply change the Python.File ftype -- just 
issue the command

ftype Python.File="C:\PythonNN\python.exe" "%1" %*

for NN = 25, 26 or 30 or whatever.  But that is longer and harder to 
remember and type than the assoc which is why chose to keep three ftypes 
around and switch between them with the assoc command.  But if you put 
them in a batch file, or shortcut, the length and complexity wouldn't be 
as much of an issue.  But changing one or changing the other is roughly 
equivalent... ftype is an extra level of indirection over assoc... and 
it is designed to allow programs that handle multiple extensions to not 
proliferate the full command for each extensions.  For example, a 
multi-image-format image program, could use something like:

assoc .jpg=ImageProg.File
assoc .gif=ImageProg.File
assoc .tif=ImageProg.File
ftype ImageProg.file="C:\Program Files\ImageProg\ImageProg.exe" "%1" %*

In that situation, because of the potentially large number of 
extensions, changing the assoc isn't equivalent to changing the ftype, 
but for Python, I'm unaware of it needing to handle multiple extensions 
from the command line or via double clicking in Explorer, so was 
exploiting the extra level of indirection to save typing, and make the 
command simpler to remember.

Not sure what your reference to an editor is about. ftype only fiddles 
with the Shell Open command; if you want to do tricks with different 
editors for different versions of Python, then you have to fiddle the 
Shell Edit command; this can be done with clever manipulation of the 
registry... it would be straightforward to create a .reg file that swaps 
both the Shell Open and Shell Edit commands for different versions of 
Python, if that is useful... and maybe it is if you use an IDE of some 
sort.  Since I just use emacs to edit .py files, I ignored the Shell 
Edit command.  Instead I have a Shell Emacs command that is set up to 
apply to all file types, and is available via the context menu from 
Windows Explorer... but I use that not only for different versions of 
Python, but source code in other languages, and text files of all types.

Glenn --
A protocol is complete when there is nothing left to remove.
-- Stuart Cheshire, Apple Computer, regarding Zero Configuration Networking

More information about the Python-list mailing list