What meaning is of '#!python'?

eryksun eryksun at gmail.com
Sun Nov 15 00:57:47 EST 2015


On Sat, Nov 14, 2015 at 8:26 PM, Zachary Ware
<zachary.ware+pylist at gmail.com> wrote:
>
> "#!python" is a valid shebang for the Python Launcher for Windows.
> It's also a not-too-terrible placeholder for a Unix shebang meaning
> "whichever Python you want it to be".  The better choice for use with
> both platforms would be "#!/usr/bin/env python", though.

The "/usr/bin/env python" virtual command searches the directories in
PATH, trying each file extension from PATHEXT such as "python.COM",
"python.EXE", and so on. You can also search for other programs such
as "pypy". Note that qualifying "python" (but not other names) as
"python2" or "python3.5" makes the launcher use the registry instead
of searching PATH.

"#!/usr/bin/python" may be better in some cases. This defaults to the
latest installed version of 2.x (or 3.x if no 2.x is installed) that's
configured in the Windows registry. Or specify "python2" or "python3"
to use the latest 2.x or 3.x. These commands can be configured to use
a particular major[.minor[-32]] version via the environment variables
PY_PYTHON, PY_PYTHON2, and PY_PYTHON3. Or you can configure them
instead by setting the "python", "python2" and "python3" keys in the
[defaults] section of the configuration file "%LOCALAPPDATA%\py.ini".
Note that the environment variable overrides the corresponding py.ini
key.

When portability isn't a concern you can use a Windows path in the
shebang such as "#!C:\pypy40\pypy.exe".

https://docs.python.org/3/using/windows.html#shebang-lines



More information about the Python-list mailing list