Python中的符号“#!”代表什么意思?

11

这行代码是什么意思?如果没有它,我的Python3 HTTP服务器就无法理解并会让浏览器下载一个空的.py文件(依赖于链接到.py文件)。

#! /usr/local/bin/python3
5个回答

18

这并不是Python特有的,它是一个hashbang(或者shebang)行,它指示了应该使用哪个解释器处理该文件。

规则因情况而异,但是在其最简单的形式中,文件名为xyz(包含在第一行中),当在命令行中使用xyz运行时,将使用相应的解释器运行,类似于:

/usr/local/bin/python3 xyz

8

7

这是shebang/hashbang行,与Python无关,而是Linux/UNIX的一个功能。

执行文件时,内核会看到#!魔法并使用其后的内容来执行脚本。由内核启动的实际程序将是program-from-shebang script-file-path [script-args]

请注意,通常不应包含.../local/...路径,而应使用例如#!/usr/bin/env python3,这将在当前PATH中查找python3,更加便携。


2
这不是Python特有的,而被称为Shebang,它告诉操作系统使用哪个程序来运行这个脚本。

2
UNIX Shebang?请参阅http://en.wikipedia.org/wiki/Shebang_(Unix)和第一个/之间的空格可能不应该存在。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接