On 12/22/2023 9:29 AM, Sibylle Koczian via Python-list wrote:
Am 22.12.2023 um 14:13 schrieb Barry:


On 22 Dec 2023, at 12:39, Sibylle Koczian via Python-list <python-list@python.org> wrote:

Hello,

I always install Python on Windows in the same manner:

- Python is not on the path,
- it is installed for all users,
- the Python Launcher is installed for all users,
- the file types .py, .pyw etc. are associated with Python.

My shebang line is usually "#!/usr/bin/env python3".

This has always worked well. I could run Python scripts in a console
window entering just the script name, by double clicking in the explorer
or using WIN+r; the two last variants for GUI or for scripts with
something like "input('Leave with Enter')" at the end.

Now I've got a new computer with Windows 11 and I've installed Python
3.12.1. On my older machine it's Windows 10 and Python 3.11.5. Reading
the Python documentation it seems my shebang lines should work as before
- but they don't. The error message:

"Unable to create process using 'C:\usr\bin\env\python
"C:\Eigen\Src\launcher_versuche.py" ': Das System kann die angegebene
Datei nicht finden."

Without the "env" in the shebang line and only without it everything
works as expected - but that's contrary to the documentation, isn't it?

This suggests a typo in the shebang line. Is there a space between env and python?

Barry


Tried several variants with the same script:

#!/usr/bin/env python3
# That's how I wrote it for Windows 10 / Python 3.11. It works there.

#!/usr/bin/env python
#!/usr/bin/env/python

The error messages vary a little. This is a German Windows installation,
the two variants with the space produce the same German error message,
the third produces the message I've put into my first description.

The working variant on Windows 11 / Python 3.12 is "#!/usr/bin python".

There is some important context that is missing here. Python on Windows does not normally install to that location. That is not even a Windows path, neither by directory name nor by path separators.

In addition, Powershell and cmd.exe do not use a shebang line, at least through Windows 10. Instead, they use whatever executable has been registered for a file extension. This may or may not be the version you think. On my system, the OS will use Python 3.9, but actually the most recent Python version on my system is Python 3.12. I can demonstrate the difference: here is a tiny Python file with a shebang line, called showme.py:

#! %USERPROFILE%\AppData\Local\Programs\Python\Python312\python.exe
import sys
print(sys.executable)

Run this with the "py" launcher:
py showme.py
# prints C:\Users\tom\AppData\Local\Programs\Python\Python312\python.exe

Run it by invoking just the script's name:
showme.py
# prints C:\Program Files\Python39\python.exe

In neither case is the shebang line used.

This makes me think that maybe the Linux subsystem for Windows is being used here. If so, possibly the syntax for a shebang line has been tightened up, or there's a typo. Either way, I would not automatically assume that Windows (at least through Windows 10) ever used the shebang line for launching these scripts.



--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to