Python 所有通过终端运行的程序都应该使用Shebang行吗?

Python 所有通过终端运行的程序都应该使用Shebang行吗?,python,macos,Python,Macos,我的书指出: 所有Python程序的第一行应该是shebang行,它告诉您的计算机您希望Python执行这个程序。OSX的shebang行是#/usr/bin/env python3. 但是我的程序运行得非常好,没有终端中的shebang行。那我将来应该用它吗?此外,OSX中的shebang生产线末端是否有一个全站(.)位置?生产线末端不应该有一个全站位置 是否添加shebang取决于您希望如何运行它。如果您总是显式地调用解释器,那么它是可选的,即 $ python3 script.py 不需

我的书指出:

所有Python程序的第一行应该是shebang行,它告诉您的计算机您希望Python执行这个程序。OSX的shebang行是
#/usr/bin/env python3.


但是我的程序运行得非常好,没有终端中的shebang行。那我将来应该用它吗?此外,OSX中的shebang生产线末端是否有一个全站(.)位置?

生产线末端不应该有一个全站位置

是否添加shebang取决于您希望如何运行它。如果您总是显式地调用解释器,那么它是可选的,即

$ python3 script.py
不需要shebang,也不需要文件的可执行权限。您可以添加shebang,代码仍将运行,在这种情况下,它可以用作文档

但是,如果您想这样执行它:

$ ./script.py


然后,您需要添加shebang并对该文件设置可执行权限(请参见)。

没有必要,您可以使用python命令运行*.py文件,您仍然不需要shebang,我能想到的唯一使用shebang的情况是使*.py文件可执行并直接作为shell运行。@Rafed,mhawke提到的/path/to/script/script.py直接运行它。首先非常感谢您的回答!所以你的意思是,如果我使用空闲shell或通过终端打开文件,我不需要使用shebang行。但是如果我想使用
$/path/to/script/script.py
打开一个python文件,那么我需要一个shebang行,因为它将授予运行该文件的权限。请纠正我的错误:)@Rafedyadav否,要通过路径执行程序,您需要有一个shebang行,并设置文件的执行权限。添加一个shebang并不能授予该权限。@GordonDavisson,chmod是用来授予该权限的吗?@Rafedyadav:Yes,
chmod+x/path/to/script/script.py
会这样做。顺便说一句,考虑是否需要shebang的一种方法是:当你运行程序时,你是在想“我想运行这个程序”还是“我想运行这个Python程序”?在开发它的时候,你会把它看作是一个Python程序,但是后来当有人试图使用它时,他们就不再关心(或者甚至不知道)它是用什么写的了。拥有shebang和execute权限允许某人运行它,而不必担心它是用什么语言编写的。
$ /path/to/script/script.py