Python Script Hashplings

Tim Golden mail at timgolden.me.uk
Fri Jul 26 06:47:24 EDT 2013


On 26/07/2013 11:37, Devyn Collier Johnson wrote:
> 
> On 07/25/2013 09:54 AM, MRAB wrote:
>> On 25/07/2013 14:42, Devyn Collier Johnson wrote:
>>> If I execute a Python3 script with this haspling (#!/usr/bin/python3.3)
>>> and Python3.3 is not installed, but Python3.2 is installed, would the
>>> script still work? Would it fall back to Python3.2?
>>>
>> Why don't you try it?
>>
>>> I hope Dihedral is listening. I would like to see another response
>>> from HIM.
>>>
>>
> Good point, but if it falls back to Python3.2, how would I know? Plus, I
> have Python3.3, 3.2, and 2.7 installed. I cannot uninstall them due to
> dependencies.

Devyn, I'm not a *nix person so someone can point out if I'm wrong, but
my understanding is that the shebang line (or whatever you want to call
it) just tells the shell: run this command to run this file. So you can
put "#!/usr/bin/fish-and-chips" as the first line and it will try to run
the file using /usr/bin/fish-and-chips.

If you put #!/usr/bin/python3.3 the shell will use the executable
/usr/bin/python3.3. It doesn't know or care about Python or its
versions: it won't go looking for some alternative binary. If
/usr/bin/python3.3 isn't there, the shell will fail to run the code with
some kind of error message.

If you or your package manager symlink /usr/bin/python3 to whatever the
latest Python 3.x is on your system then you can safely use
/usr/bin/python3 throughout and let the symlink do the work!

TJG




More information about the Python-list mailing list