patternpythonCritical
Should I put #! (shebang) in Python scripts, and what form should it take?
Viewed 0 times
scriptsshouldpythontakeformshebangandwhatput
Problem
Should I put the shebang in my Python scripts? In what form?
or
Are these equally portable? Which form is used most?
Note: the tornado project uses the shebang. On the other hand the Django project doesn't.
#!/usr/bin/env python
or
#!/usr/local/bin/python
Are these equally portable? Which form is used most?
Note: the tornado project uses the shebang. On the other hand the Django project doesn't.
Solution
The shebang line in any script determines the script's ability to be executed like a standalone executable without typing
Correct usage for (defaults to version 3.latest) Python 3 scripts is:
Correct usage for (defaults to version 2.latest) Python 2 scripts is:
The following should not be used (except for the rare case that you are writing code which is compatible with both Python 2.x and 3.x):
The reason for these recommendations, given in PEP 394, is that
Also, do not use:
"python may be installed at /usr/bin/python or /bin/python in those
cases, the above #! will fail."
―"#!/usr/bin/env python" vs "#!/usr/local/bin/python"
python beforehand in the terminal or when double clicking it in a file manager (when configured properly). It isn't necessary but generally put there so when someone sees the file opened in an editor, they immediately know what they're looking at. However, which shebang line you use is important.Correct usage for (defaults to version 3.latest) Python 3 scripts is:
#!/usr/bin/env python3
Correct usage for (defaults to version 2.latest) Python 2 scripts is:
#!/usr/bin/env python2
The following should not be used (except for the rare case that you are writing code which is compatible with both Python 2.x and 3.x):
#!/usr/bin/env python
The reason for these recommendations, given in PEP 394, is that
python can refer either to python2 or python3 on different systems.Also, do not use:
#!/usr/local/bin/python
"python may be installed at /usr/bin/python or /bin/python in those
cases, the above #! will fail."
―"#!/usr/bin/env python" vs "#!/usr/local/bin/python"
Context
Stack Overflow Q#6908143, score: 1729
Revisions (0)
No revisions yet.