Python 3.12.1, Windows 11: shebang line #!/usr/bin/env python3 doesn't work any more

Sibylle Koczian nulla.epistola at web.de
Mon Jan 15 11:44:36 EST 2024


Am 15.01.2024 um 00:46 schrieb Mike Dewhirst via Python-list:
> In Windows the provided methods for running complex command lines are either a batch file or a shortcut.Someone very kindly pointed out to me in this thread that there is a PEP for py.exe. I don't use py.exe originally because I didn't trust it believing it was a new-fangled Microsoft trick. I did read that PEP but it has no relevance for my mixed Windows/Linux environments. On reflection I now believe I won't use py.exe because it introduces an unnecessary layer of indirection.The  bottom line is that you still need to know which Python a particular set of circumstances demands and if you use py.exe you then need to also understand how it chooses and how it interprets shebang lines written for your Linux environment. And if that isn't your situation I have jumped to the wrong conclusion.I have found no problem in Windows when I use shebang lines in scripts intended for execution in both Linux and Windows. They are ignored unless you use py.exe.My advice is to give up py.exe unless your use case mandates shebang lines in Windows.M--(Unsigned mail from my phone)

First and foremost I want to understand why I'm seeing this:

- Python scripts with "/usr/bin/env python3" as shebang line work as 
expected on a computer with Windows 10 and Python 3.11.5. They have 
worked for years on this machine, using either the latest Python or one 
version before (depending on availability of some packages). There is a 
virtual machine with ArchLinux on the same machine and some of the 
scripts are copies from that.

- I've got a second computer with Windows 11 and I installed Python 
3.12.1 on it. After copying some scripts from my first computer I found 
that I couldn't start them: not by entering the script name in a 
console, not using py.exe, not double clicking in the explorer. Entering 
<full_path_to_python.exe>\python <scriptname> probably worked - I think 
I tried that too, but I'm not really sure, because that's really not 
practical.

In the Python documentation for versions 3.11 and 3.12 I found no 
differences regarding py.exe and shebang lines.

Then I removed the "/env" from the shebang lines and could start the 
scripts from the second computer. That certainly is a solution, but why???

Sibylle





More information about the Python-list mailing list