这两个python shebangs有什么区别

Ken*_*Ken 57 python shebang

我曾经使用过shebang

#!/usr/bin/env python
Run Code Online (Sandbox Code Playgroud)

什么时候使用更好

#!/usr/bin/python
Run Code Online (Sandbox Code Playgroud)

它们之间的确切区别是什么?

var*_*tec 70

#!/usr/bin/python硬编码总是运行/usr/bin/python,而#!/usr/bin/env python将运行python当前环境中的默认值(例如$PATH,它将考虑将使用哪个python解释器which python).

第二种方式(#!/usr/bin/env python)是首选,因为它不依赖于特定的安装.它可以用于virtualenv没有设置或系统的设置或系统/usr/bin/python,但仅限于例如/usr/local/bin/python.

  • 这个.参见[为什么人们写#!的/ usr /斌/包膜蟒蛇在Python脚本的第一行?(http://stackoverflow.com/q/2429511/668807)和[Python的邮件列表上此消息] (http://mail.python.org/pipermail/tutor/2007-June/054828.html). (4认同)
  • 这是否意味着使用`#!/usr/bin/env perl` 会比通常的shebang `#!/bin/perl` 更通用?在我看来,人们通常在 perl 中使用 `#!/bin/perl`,而在 python 中使用 `#!/usr/bin/env python`。为什么? (2认同)