我应该把shebang行放在每个python文件中吗?

时间:2014-10-30 10:20:59

标签: python shebang

我正在使用我导入的多个文件的中型python(2.7)项目。我有一个主要的python文件启动程序。其他文件包含类定义,函数等。

我想知道是否应该将shebang行放在每个python文件中,或者只将我运行的那个放在我的程序中?

4 个答案:

答案 0 :(得分:11)

只有通过直接调用它们才会执行的文件需要shebang。小提示:如果文件包含

if __name__ == "__main__":
    main()

最好(坚持最低惊讶原则)用一个shebang开始它。确保那个shebang健壮;而是

#!/usr/bin/env python

大于

#!/usr/bin/python

许多模块文件包含用于启动测试的main方法,因此许多模块文件以shebang开头。

答案 1 :(得分:2)

这取决于。简短的回答是你只需要#!如果要将文件作为主程序执行,则行。您可以将其视为只有一个文件需要它的含义。但....

编写用作组件和主程序的模块是一种常见模式。这(至少)可以帮助测试。该模块可以在没有其余程序的情况下自行测试。诀窍是把它放在程序的最后:

if __name__ == '__main__':
    # Run some tests, or other stuff here

这样,它可以作为主程序存在。拥有一个名为main的函数并从if语句调用它是很常见的,但这不是强制性的。

答案 2 :(得分:1)

不,只有主要的Python文件需要shebang。

仅当您想要以./your_file.pyyour_file.py执行时才需要shebang,如果它在$PATH中。因此,除非其他文件也应该可以自己执行(你总是可以使用python your_file.py执行),否则你不需要shebang。

答案 3 :(得分:1)

你只需要在你执行的文件中使用它,虽然它可能有助于代码编辑者告诉他们在其他文件中有什么类型的代码。