Python中"#!"符号是什么意思?

11 投票
5 回答
10336 浏览
提问于 2025-04-16 19:14

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

#! /usr/local/bin/python3

5 个回答

7

这段话说的是一种叫做shebang(或hashbang)的东西,它和Linux/UNIX系统有关,跟Python没有直接关系。

当你执行一个文件时,系统内核会看到开头的#!这个标记,然后会根据后面跟着的内容来执行这个脚本。实际上,内核启动的程序会是program-from-shebang script-file-path [script-args]这样的格式。

需要注意的是,通常不建议在这里写具体的路径,比如.../local/...,而是应该使用像#!/usr/bin/env python3这样的写法,这样系统会在当前的环境变量路径中查找python3,这样做更灵活,也更容易在不同的环境中使用。

8

这不是Python特有的概念,具体可以参考这个链接:http://en.wikipedia.org/wiki/Shebang_(Unix

18

这不是Python特有的,而是一个叫做哈希bang(或称为shebang)的行,它告诉系统应该用哪个解释器来处理这个文件。

规则有些不同,但简单来说,如果一个文件名叫做xyz,并且它的第一行是哈希bang,当你在命令行中输入xyz来运行它时,系统会用指定的解释器来执行这个文件,类似于:

/usr/local/bin/python3 xyz

撰写回答