[Tutor] Shebang (#!) in the first line of a python script
Katt
the_only_katala at verizon.net
Tue Oct 13 20:44:47 CEST 2009
> Message: 2
> Date: Tue, 13 Oct 2009 06:24:42 -0400
> From: Dave Angel <davea at ieee.org>
> To: Alan Gauld <alan.gauld at btinternet.com>
> Cc: tutor at python.org, Katt <the_only_katala at verizon.net>
> Subject: Re: [Tutor] Shebang (#!) in the first line of a python script
> Message-ID: <4AD4556A.2020406 at ieee.org>
> Content-Type: text/plain; charset=ISO-8859-1; format=flowed
>
> Alan Gauld wrote:
>> "Katt" <the_only_katala at verizon.net> wrote
>>
>>> Okay. So if I were to place the following in my Windows XP py v.2.6.2 :
>>>
>>> $ (name of python script)
>>>
>>> Then as long as python was in my path I would be able to type the
>>> name of the script like a Dos batch file (ex: lowertoupper.py or
>>> lowertoupper) instead of having to type python lowertoupper.py? And
>>> it will run as normal?
>>
>> The shebang line does nothing on Windows, it is just a comment.
>> Windows uses the file extension so, provided you end the file in .py,
>> you can just type in the name of the script and Windows will use the
>> file association to find the interpreter.
>>
> As Alan says, the default shells in Windows ignore the shebang line. So
> unless you have a custom shell installed, you need to understand the
> Windows pattern.
>
> They have another mechanism, which involves two registry entries and an
> environment variable. The registry entries can easily be manipulated
> using the utility programs assoc.exe and ftype.exe. However, as long as
> you have a single Python installation, these are probably already setup
> for you. If you have more than one Python version installed, you might
> need to use ftype to switch which one is your default.
>
> As long as you're using this mechanism, python.exe does *not* have to be
> on your PATH. The full path location of python.exe is set up by ftype.
> You may want your script(s) to be on your PATH of course.
>
> The environment variable is used to avoid the need to type the
> extension. This is *not* set up by default in the Python installation,
> at least in my experience. But you can easily do it yourself. The
> environment variable PATHEXT has a list of extensions that it will
> search for.
>
> Mine looks like:
> PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.PY;.PYW
>
> Yours probably doesn't yet have the last two entries, and the others
> might be somewhat different as well.
>
> With .py in this variable, you can type lowertoupper instead of
> lowertoupper.py
>
> DaveA
>
You were right. I did not have .PY/.PYW in my PATHEXT. I have put it in as
suggested. I do have python.exe in my path so that should take care of
things.
Messing around with the windows registry isn't something I want to tackle
just yet so I will save that for later.
Thank you for your help,
Katt
More information about the Tutor
mailing list