Why Ubuntu doesn’t support certain form of shebang for Python?

Barry Warsaw barry at python.org
Tue Nov 11 18:31:09 UTC 2014

On Nov 11, 2014, at 01:04 PM, Rodney Dawes wrote:

>Using /usr/bin/env will cause problems in certain conditions, such as
>when running under a virtualenv and other such environments.

The general recommendation is that /usr/bin/env is a good shebang to use when
your package is under development, but once deployed (e.g. installed in
/usr/bin as part of a .deb), it should use an explicit path to a Python
interpreter.  That means /usr/bin/python for Python 2 and /usr/bin/python3 for
Python 3.

If you're using the Python helpers to build your distutils/setuptools-based
packages, it should Just Work.

>Also, for python 2.x scripts, you should always use /usr/bin/python, and
>if python3 is required, /usr/bin/python3. There is no guarantee that
>"python2" will be a valid command.

Certainly true for the widest cross platform support, however on Debian and
Ubuntu /usr/bin/python2 does point to the latest Python 2 release
(e.g. python2.7).

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <https://lists.ubuntu.com/archives/ubuntu-devel-discuss/attachments/20141111/8dba7bf7/attachment.sig>

More information about the Ubuntu-devel-discuss mailing list