我在Python文件的顶部看到了这些:
#!/usr/bin/env python
#!/usr/bin/env python3
在我看来,没有这一行,文件运行是一样的。
我在Python文件的顶部看到了这些:
#!/usr/bin/env python
#!/usr/bin/env python3
在我看来,没有这一行,文件运行是一样的。
当前回答
技术上讲,在Python中,这只是一个注释行。
这一行只在从shell(从命令行)运行py脚本时使用。这就是所谓的“Shebang!”,它被用于各种情况,而不仅仅是Python脚本。
在这里,它指示shell启动特定版本的Python(以处理文件的其余部分)。
其他回答
这告诉脚本python目录在哪里!
#! /usr/bin/env python
它告诉解释器,当你有多个版本的python时,使用哪个版本的python运行程序。
这是推荐的方法,在文档中提出:
2.2.2. 可执行Python脚本 在BSD的Unix系统上,可以直接编写Python脚本 可执行,就像shell脚本一样 # !/usr/bin/env python3.2
从http://docs.python.org/py3k/tutorial/interpreter.html executable-python-scripts
这是一个shell约定,告诉shell哪个程序可以执行脚本。
#!/usr/bin/env python
解析为Python二进制文件的路径。
这意味着更多的是历史信息而不是“真实的”答案。
请记住,过去有很多类似unix的操作系统,它们的设计者都有自己的想法,把东西放在哪里,有时根本不包括Python、Perl、Bash或许多其他GNU/开源的东西。
这甚至适用于不同的Linux发行版。在Linux - pre-FHS1 -你可能在/usr/bin/或/usr/local/bin/中有Python。或者它可能还没有安装,所以您构建了自己的,并将其放在~/bin中。
Solaris是我工作过的最糟糕的系统,部分原因是从Berkeley Unix到System v的过渡。你可能会在/usr/、/usr/local/、/usr/ucb/、/opt/等目录下找到东西。这可能会导致一些很长的路径。我记得从Sunfreeware.com安装每个包在自己的目录,但我不记得它是否符号链接二进制文件到/usr/bin/。
哦,有时/usr/bin/在NFS服务器2上。
所以env实用程序就是为了解决这个问题而开发的。
然后你可以写#!/bin/env解释器,只要路径是正确的,程序就有合理的运行机会。当然,合理意味着(对于Python和Perl)还设置了适当的环境变量。对于bash/ksh/zsh,它可以正常工作。
这很重要,因为人们在传递shell脚本(如Perl和Python),如果你在Red Hat Linux工作站上硬编码/usr/bin/python,它将在SGI上坏掉……不,我认为IRIX把Python放在了正确的位置。但在Sparc空间站上,它可能根本无法运行。
我想念我的斯巴达站。但不是很多。好吧,现在你让我在易趣网上搜了。Bastages。
1文件系统层次标准。
2是的,有时候人们还是会做这样的事情。不,我的腰带上既没有萝卜也没有洋葱。