精华内容
下载资源
问答
  • /usr/bin/env python3 或者 #!/usr/bin/python3 这是脚本语言共同遵守的规则:当第一行为 #!/path/to/script/interpreter 时,指定了用来执行本脚本的解释器。 注意: 1.必须是文件的第一行 2.必须以#!..

    在脚本中,第一行以 #! 开头的代码,其作用是“指定由哪个解释器来执行脚本”。#! 在计算机行业中叫做 "shebang", 也叫做 sha-bang / hashbang。

    在 Python 脚本的第一行经常见到这样的注释:

    #!/usr/bin/env python3
    或者
    #!/usr/bin/python3

    这是脚本语言共同遵守的规则:当第一行为 #!/path/to/script/interpreter 时指定用来执行本脚本的解释器

    注意:

    1.必须是文件的第一行
    2.必须以#!开头
    3./path/to/script/interpreter是脚本解释器的全路径名

    例如:

    #!/bin/sh             shell脚本
    #!/bin/bash         shell脚本
    #!/usr/bin/perl     perl脚本
    #!/usr/bin/python     python脚本
    #!/usr/bin/python3   python3脚本
    #!/usr/bin/python2   python2脚本

    而有时不太清楚脚本解释器的具体全路径名,或者开发环境与运行环境的安装路径不同。为了保证兼容性,也可以写作:

    #!/usr/bin/env python3
    #!/usr/bin/env python               在linux系统现在python默认是python2

    这样运行时会自动搜索脚本解释器的绝对路径。

    说明:

    /usr/bin 是一个系统目录,里面存储一些系统命令、可执行程序。类似 windows操作系统的 C:\Windows\System32 目录。

    linux的shell是通过读取程序的第一行来判断被执行文件的类型。如果是 #! 开头,说明是脚本,其中 /usr/bin/python 、/usr/bin/bash 、/bin/bash 等等 说明执行此脚本需要的解释程序。

    windows下往往是通过文件后缀做类似关联。然后确定用哪个程序去执行,或者怎么打开的。

    eg:

    为什么要指定解释器?

    举个例子,很多人在系统中同时安装了python2 和 python3,但是2和3是不兼容的,所以执行脚本时必须指定解释器。

    再比如说,Unix系统中一般同时安装了多个版本的Shell,比如常用的 bash、sh 和 现代的 zsh,但是这些shell的语法并不完全相同,所以也需要指定解释器。

    如何指定解释器

    一. 如果是通过命令行 (shell) 执行脚本:

    • 1. 在 "Unix -like 系统"中 (比如服务器常用的 CentOS, 或者苹果的 OS X)

      • 用命令行执行脚本时, 指定解释器: python3 ./my_script.py;

      • 也可以在脚本内, 通过 shebang 指定解释器. 比如想让 Python3 解释器来执行脚本, 那么, 在 Python 脚本的第一行写上 #!/usr/bin/python3 或者是
        #!/usr/bin/env python3, 然后给文件赋予执行权限后用命令行直接调用文件  ./my_script.py, shell 会检查脚本的第一行代码, 发现有 shebang, 会按其指定的解释器来执行;

      • 如果上面两种方式是冲突的, 比如在 shebang 中指定 python3, 但是命令行执行时指定 Python2 -- python2 ./my_script.py, 结果会如何? 结果是"命令行指定"比 "shebang 指定"更优先. 下面是试验:

        文件名为 diff_interpreter.py 的 Python 脚本, 其代码指定了 yython 3:

        #!/usr/bin/env python3
        print(5/2)

        文件名为 diff_interpreter 的可执行文件,其代码也指定了 python3:

      • #!/usr/bin/env python3
        print(5/2)

        如下图所示:

      • 在命令行调用时, 分别指定 Python 2 和 Python 3, 执行结果如下:

    如果不指定解释器,直接执行可执行文件,就会报错,但如果在命令行中直接指定用哪个解释器执行,即 python3 xxx.py,就不会报错:比如:

    二. 如果是在图形界面, 通过双击文件来执行脚本:

    系统会根据该文件类型设定的软件打开.
    比如 Windows, 会根据文件扩展名来决定打开方式. 如果你之前设置了 *.py 后缀的文件用 python3 的软件打开, 双击时就会用 python3 打开. 如果碰到 python 2.x 的脚本, 则需要右键更改"打开方式".

    OS X 也是如此.

    为什么选用 #! 作为 Shebang 的标志符?

    因为大部分的编程语言把 # 开头的代码解释为注释.

    即使某种语言不是以 # 作为注释的标志符, 由于 shebang 的流行, 其解释器对于首行以#!开头的内容, 也会识别出这是 shebang, 从而忽略这一行.

     

    如何使用 Shebang 指定 Python 解释器?

    可以在脚本第一行写上 #!/usr/bin/env python3 或者 #!/usr/bin/python3 

    • #!/usr/bin/python3 表示 python3 解释器所处的绝对路径就是 /usr/bin/python3, 路径被写死了, 类似于编程中的"硬编码".
      之所以有这种写法, 是因为在类 Unix 系统中, python 解释器一般情况下都位于这个路径.
      不过, 如果碰到 python 解释器不在该路径下的话, 脚本就无法执行了!
    • #!/usr/bin/env/ python3 表示从 "PATH 环境变量"中查找 python3 解释器的位置, 路径没有被写死, 而是在"环境变量"中寻找 python3 解释器的安装路径, 再调用该路径下的解释器来执行脚本.

    显然, 采用 #!/usr/bin/env python3 的写法更灵活更具有通用性, 推荐使用这种写法.

    如何使用 Shebang 指定 shell 解释器?

    使用 shebang:

    • #!/bin/sh 表示用 Bourne shell 来执行.
      如果系统中没有 sh, 会选择兼容的 shell 解释器
    • #!/bin/bash 表示用 Bash shell 来执行.
      如果系统中没有 bash, 会选择兼容的 shell 解释器

    注意

    • #!之后的空格是可选的, #!/usr/bin/env python3 #! /usr/bin/env python3 这两种写法都是允许的
    • 大部分 Python 文件不必写 Shebang, 只有被直接执行的文件才有必要加入 Shebang

    额外

    Python 脚本开头经常见到这样的代码:

    #!/usr/bin/env python
    #coding=utf-8

    之所以写 #coding=utf-8 是为了指定字符编码.

    为什么要指定字符编码?

    因为 Python 2 默认使用的是 ASCII 编码 (不支持中文), Python 3 默认使用 UTF-8 编码 (万国码, 支持中文).

    所以 Python 2 中为了支持中文, 都会在开头加入 #coding=utf-8 这个声明. 而 Python 3 默认支持 UTF-8 编码, 所以 Python 3 并不需要 #coding=utf-8 声明

    注意:
    常见的写法有: #coding=utf-8#! -*- coding:utf-8 -*-, 都是合法有效的
    但是, coding =之间, 或者coding :之间, 不能有空格!

    ok

    展开全文
  • #!/usr/bin/env python3 的作用

    千次阅读 2020-04-21 14:27:37
    /usr/bin/env python3 或者 #!/usr/bin/python3 含义 在脚本中, 第一行以 #! 开头的代码, 在计算机行业中叫做 “shebang”, 也叫做 sha-bang / hashbang / pound-bang / hash-pling, 其作用是"指定由哪个解释器来...

    在 Python 脚本的第一行经常见到这样的注释:

    #!/usr/bin/env python3
    或者
    #!/usr/bin/python3
    

    含义

    在脚本中, 第一行以 #! 开头的代码, 在计算机行业中叫做 “shebang”, 也叫做 sha-bang / hashbang / pound-bang / hash-pling, 其作用是"指定由哪个解释器来执行脚本".

    为什么要指定解释器?

    举个例子, 很多人在系统中同时安装了 Python2 和 Python3, 但是 2 和 3 是不兼容的, 所以执行脚本时必须指定解释器.

    再比如说, Unix 系统中一般同时安装了多个版本的 Shell, 比如常用的 bash、sh 和 现代的 zsh, 但是这些 shell 的语法并不完全相同, 所以也需要指定解释器.

    如何指定解释器?

    一. 如果是通过命令行 (shell) 执行脚本:

    1. 在 "Unix -like 系统"中 (比如服务器常用的 CentOS, 或者苹果的 OS X)

    用命令行执行脚本时, 指定解释器: python3 ./testenv.py;

    也可以在脚本内, 通过 shebang 指定解释器. 比如想让 Python3 解释器来执行脚本, 那么, 在 Python 脚本的第一行写上 #!/usr/bin/python3 或者是
    #!/usr/bin/env python3, 然后用命令行直接调用文件 – ./testenv.py, shell 会检查脚本的第一行代码, 发现有 shebang, 会按其指定的解释器来执行;

    如果上面两种方式是冲突的, 比如在 shebang 中指定 python3, 但是命令行执行时指定 Python2 – python2 ./testenv.py, 结果会如何? 结果是"命令行指定"比 "shebang 指定"更优先. 下面是试验:
    文件名为 testenv.py的 Python 脚本, 其代码指定了 Python 3:

    #!/usr/bin/env python3
    print(3/2)
    

    在命令行调用时, 分别指定 Python 2 和 Python 3, 执行结果如下:

    [root@localhost ~]# ./testenv.py 
    1.5
    [root@localhost ~]# python2 ./testenv.py 
    1
    [root@localhost ~]# python3 ./testenv.py 
    1.5
    

    如何使用 Shebang 指定 Python 解释器?

    可以在脚本第一行写上 #!/usr/bin/env python3 或者 #!/usr/bin/python3:

    #!/usr/bin/python3 表示 python3 解释器所处的绝对路径就是 /usr/bin/python3, 路径被写死了, 类似于编程中的"硬编码".
    之所以有这种写法, 是因为在类 Unix 系统中, python 解释器一般情况下都位于这个路径.
    不过, 如果碰到 python 解释器不在该路径下的话, 脚本就无法执行了!
    #!/usr/bin/env/ python3 表示从 "PATH 环境变量"中查找 python3 解释器的位置, 路径没有被写死, 而是在"环境变量"中寻找 python3 解释器的安装路径, 再调用该路径下的解释器来执行脚本.
    显然, 采用 #!/usr/bin/env python3 的写法更灵活更具有通用性, 推荐使用这种写法.

    展开全文
  • /usr/bin/env python3Python 脚本的第一行经常见到这样的注释:#!/usr/bin/env python3 或者#!/usr/bin/python3 含义 在脚本中, 第一行以 #! 开头的代码, 在计算机行业中叫做 "shebang", 也叫做 sha-bang ...

     

    重点是推荐使用:#!/usr/bin/env python3

     

    在 Python 脚本的第一行经常见到这样的注释:
    #!/usr/bin/env python3
    或者
    #!/usr/bin/python3

    含义

    在脚本中, 第一行以 #! 开头的代码, 在计算机行业中叫做 "shebang", 也叫做 sha-bang / hashbang / pound-bang / hash-pling, 其作用是"指定由哪个解释器来执行脚本".


    为什么要指定解释器?

    举个例子, 很多人在系统中同时安装了 Python2 和 Python3, 但是 2 和 3 是不兼容的, 所以执行脚本时必须指定解释器.

    再比如说, Unix 系统中一般同时安装了多个版本的 Shell, 比如常用的 bash、sh 和 现代的 zsh, 但是这些 shell 的语法并不完全相同, 所以也需要指定解释器.


    如何指定解释器?

    一. 如果是通过命令行 (shell) 执行脚本:

    • 1. 在 "Unix -like 系统"中 (比如服务器常用的 CentOS, 或者苹果的 OS X)

      • 用命令行执行脚本时, 指定解释器: python3 ./my_script.py;

      • 也可以在脚本内, 通过 shebang 指定解释器. 比如想让 Python3 解释器来执行脚本, 那么, 在 Python 脚本的第一行写上 #!/usr/bin/python3 或者是
        #!/usr/bin/env python3, 然后用命令行直接调用文件 -- ./my_script.py, shell 会检查脚本的第一行代码, 发现有 shebang, 会按其指定的解释器来执行;

      • 如果上面两种方式是冲突的, 比如在 shebang 中指定 python3, 但是命令行执行时指定 Python2 -- python2 ./my_script.py, 结果会如何? 结果是"命令行指定"比 "shebang 指定"更优先. 下面是试验:

        文件名为 diff_interpreter.py 的 Python 脚本, 其代码指定了 Python 3:

        #!/usr/bin/env python3
        print(3/2)
        

        在命令行调用时, 分别指定 Python 2 和 Python 3, 执行结果如下:

         

        output_of_command.jpg

    • 2. 在"非 Unix-like 系统"中

    二. 如果是在图形界面, 通过双击文件来执行脚本:

    系统会根据该文件类型设定的软件打开.
    比如 Windows, 会根据文件扩展名来决定打开方式. 如果你之前设置了 *.py 后缀的文件用 python3 的软件打开, 双击时就会用 python3 打开. 如果碰到 python 2.x 的脚本, 则需要右键更改"打开方式".

    OS X 也是如此.


    为什么选用 #! 作为 Shebang 的标志符?

    因为大部分的编程语言把 # 开头的代码解释为注释.

    即使某种语言不是以 # 作为注释的标志符, 由于 shebang 的流行, 其解释器对于首行以#!开头的内容, 也会识别出这是 shebang, 从而忽略这一行.


    如何使用 Shebang 指定 Python 解释器?

    可以在脚本第一行写上 #!/usr/bin/env python3 或者 #!/usr/bin/python3:

    • #!/usr/bin/python3 表示 python3 解释器所处的绝对路径就是 /usr/bin/python3, 路径被写死了, 类似于编程中的"硬编码".
      之所以有这种写法, 是因为在类 Unix 系统中, python 解释器一般情况下都位于这个路径.
      不过, 如果碰到 python 解释器不在该路径下的话, 脚本就无法执行了!
    • #!/usr/bin/env/ python3 表示从 "PATH 环境变量"中查找 python3 解释器的位置, 路径没有被写死, 而是在"环境变量"中寻找 python3 解释器的安装路径, 再调用该路径下的解释器来执行脚本.

    显然, 采用 #!/usr/bin/env python3 的写法更灵活更具有通用性, 推荐使用这种写法.


    如何使用 Shebang 指定 shell 解释器?

    使用 shebang:

    • #!/bin/sh 表示用 Bourne shell 来执行.
      如果系统中没有 sh, 会选择兼容的 shell 解释器
    • #!/bin/bash 表示用 Bash shell 来执行.
      如果系统中没有 bash, 会选择兼容的 shell 解释器

    注意

    • #!之后的空格是可选的, #!/usr/bin/env python3#! /usr/bin/env python3 这两种写法都是允许的
    • 大部分 Python 文件不必写 Shebang, 只有被直接执行的文件才有必要加入 Shebang

    额外

    Python 脚本开头经常见到这样的代码:

    #!/usr/bin/env python
    #coding=utf-8
    

    之所以写 #coding=utf-8 是为了指定字符编码.

    为什么要指定字符编码?

    因为 Python 2 默认使用的是 ASCII 编码 (不支持中文), Python 3 默认使用 UTF-8 编码 (万国码, 支持中文).

    所以 Python 2 中为了支持中文, 都会在开头加入 #coding=utf-8 这个声明. 而 Python 3 默认支持 UTF-8 编码, 所以 Python 3 并不需要 #coding=utf-8 声明

    注意:
    常见的写法有: #coding=utf-8#! -*- coding:utf-8 -*-, 都是合法有效的
    但是, coding=之间, 或者coding:之间, 不能有空格!

     

    展开全文
  • /usr/bin/env python3或者#!/usr/bin/python3字样,其中#!符号在计算机行业中叫做 “Shebang”, 其作用是指定由哪个解释器来执行脚本。在这里即是指定python3作为解释器。 指定解释器 windows系统是根据文件后缀决定...

    原文:https://finthon.com/python-shebang/

    简介

    在Python脚本的第一行,常常能看到#!/usr/bin/env python3或者#!/usr/bin/python3字样,其中#!符号在计算机行业中叫做 “Shebang”, 其作用是指定由哪个解释器来执行脚本。在这里即是指定python3作为解释器。

    指定解释器

    windows系统是根据文件后缀决定打开方式的,因此首行Shebang是没有用的,只有类unix系统才是根据文件头决定脚本运行方式。

    在 类Unix 系统中 :

    • 通过命令行形式指定解释器:python3 ./script.py,这种方式脚本中就可以不添加Shebang行;
    • 通过脚本的Shebang来指定解释器: ./script.py,这种方式就需要脚本的第一行如果写上 #!/usr/bin/python3 或者是#!/usr/bin/env python3, shell 会检查脚本的第一行代码, 发现有Shebang, 会按其指定的解释器来执行,在这里就是用python3 解释器来执行;
    • 命令行指定要比Shebang指定优先级更高:当脚本里写上#!/usr/bin/python3 或者是#!/usr/bin/env python3, 但是在命令行输入python2 ./script.py,最终是以python2解释器来执行。

    浅谈#!/usr/bin/python3 和 #!/usr/bin/env python3

    它的结果为:

    浅谈#!/usr/bin/python3 和 #!/usr/bin/env python3

    注意两点

    • #!之后的空格是可选的,#!/usr/bin/env python3#! /usr/bin/env python3 这两种写法都可以;
    • 通过命令行指定解释器执行文件是不必写Shebang的, 只有被直接执行的文件才有必要加入Shebang。

      区别

      #!/usr/bin/python3采用了绝对路径的写法,即指定了采用/usr/bin/python3该路径下的解释器来执行脚本。如果python3解释器不在该路径下的话(用anaconda安装的话有可能不在),./script.py 就无法运行。
      #!/usr/bin/env python3 的写法指定从PATH环境变量中查找python解释器的位置,因此只要环境变量中存在,该脚本即可执行。所以一般情况下采用 #!/usr/bin/env python3 的写法更好,容错率更高。

    转载于:https://blog.51cto.com/11970781/2381703

    展开全文
  • #!/usr/bin/python3 和 #!/usr/bin/env python3的区别

    万次阅读 多人点赞 2018-05-15 10:57:05
    脚本语言的第一行,目的就是指出,你想要你的这个文件中的.../usr/bin/env python3这种用法是为了防止操作系统用户没有将python3装在默认的/usr/bin路径里。当系统看到这一行的时候,首先会到env设置里查找python3...
  • 简单的第一个Python程序: .../usr/bin/env python3这种用法是为了防止操作系统用户没有将python3装在默认的/usr/bin路径里。当系统看到这一行的时候,首先会到env设置里查找python3的安装路径,再调用对应路径
  • 我们使用IDE新建python脚本的时候,有的需要加上解释器路径.../usr/bin/env python3 # -*- coding:utf-8 -*- 设置步骤 Fiel -> Settings Editor -> File and Code Templates -> Python Script ...
  • #!/usr/bin/python3 表示 python3 解释器所处的绝对路径就是 .../usr/bin/env/ python3 表示从 "PATH 环境变量"中查找 python3 解释器的位置, 路径没有被写死, 而是在"环境变量"中寻找 python3...
  • #!/bin/bash 和 #!/usr/bin/env bash 的区别

    千次阅读 多人点赞 2020-05-18 01:21:02
    文章中这样提到: 当你执行 env python 时,它其实会去 env | grep PATH 里(也就是 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)这几个路径里去依次查找名为 python 的可执行文件。 那么,我们...
  • shell第一句话#!/usr/bin/python3的作用

    千次阅读 2019-11-12 20:06:09
    /usr/bin/env python3 或者 #!/usr/bin/python3 含义   在脚本中, 第一行以 #! 开头的代码, 在计算机行业中叫做 “shebang”, 也叫做 sha-bang / hashbang / pound-bang / hash-pling, 其作...
  • /usr/bin/env python 或 #!/usr/bin/python 首先要确定的一点是它不是注释。这两句话的目的都是指出你的python文件用什么可执行程序去运行它。 #!/usr/bin/python 是告诉操作系统执行这个脚本的时候,调用 /usr/...
  • /usr/bin/env python3这种用法是为了防止操作系统用户没有将python3装在默认的/usr/bin路径里。当系统看到这一行的时候,首先会到env设置里查找python3的安装路径(即在“环境变量”里面查找),再调用对应路径下的...
  • 一般的Python脚本开头都会有以下代码,这些都是什么...为了防止用户没有将python3安装在默认的/usr/bin目录,系统会先从env(系统环境变量)里查找python3的安装路径,再调用对应路径下的解析器完成操作 #!/usr/bin/env
  • 第二部分是 /usr/bin/python 或者 /usr/bin/env python 关于 #! 这个符号,其实它是有名字的,叫做 Shebang 或者Sha-bang ,有的翻译组将它译作 释伴,即“解释伴随行”的简称,同时又是Shebang的音译。 Shebang通常...
  • /usr/bin/env python 这种用法是为了防止操作系统用户没有将python装在默认的/usr/bin路径里。目的是在运行python脚本的时候告诉操作系统我们要用python解释器去运行py脚本。 # -*- coding: utf-8 -*- 这一句是告诉...
  • /usr/bin/bash When I tried to see the env man page, I get this definition: 当我试图看到env手册页时,我得到了这个定义: env - run a program in a modified environment What does it mean? 这是什么意思? #...
  • 一、声明作用 #!/usr/bin/python #!/usr/bin/env python #coding:utf-8 以上代码,放在python文件的头部,仅作为.../usr/bin/env python3 # encoding: utf-8 二、#!/usr/bin/python 指定 【/usr/bin/python】...
  • 我们经常会在别人的脚本或者项目的入口文件里看到第一行是下面这样#!/usr/bin/python 或者这样#!/usr/bin/envpython 这两者有什么区别呢?稍微接触过 l...
  • python中关于#!/usr/bin/env python2/3解释

    千次阅读 2018-03-21 20:10:10
    /usr/bin/env python2 # -*- coding:utf-8 -*-脚本语言的第一行作用是指定执行该脚本的解释器,通常会有以下几种不同的写法,效果相同:#!/usr/bin/python :是告诉操作系统执行这个脚本的时候,调用/usr/bin下的...
  • /usr/bin/env python # coding=utf-8为例) 方法1 在VSCode左下角齿轮那里 选择user snippets 出来以后选python JSON里面加下面这一段 然后在.py文件输入header就会变成这个文件头了 "header of user":{ "prefix...
  • python 第一行 #!/usr/bin/python 详解

    千次阅读 2019-10-07 15:30:46
    /usr/bin/python的解释,相信很多不熟悉 Linux 系统的同学需要普及这个知识. 脚本语言的第一行 (只对 Linux/Unix 用户适用) 用来指定本脚本用什么解释器来执行。 有这句的,加上执行权限后,可以直接用./执行,...
  • #!/usr/bin/env与#!/usr/bin/

    千次阅读 2018-07-26 15:38:01
    /usr/bin/env python与#!/usr/bin/python的区别: 脚本语言的第一行,目的就是指出,你想要你的这个文件中的代码用什么可执行程序去运行它,就这么简单 #!/usr/bin/python是告诉操作系统执行这个脚本的时候,调用/...
  • /usr/bin/env python3 或者 #!/usr/bin/python3 含义 在脚本中, 第一行以#!开头的代码, 在计算机行业中叫做"shebang", 也叫做 sha-bang / hashbang / pound-bang / hash-pling, 其作用是"指定由哪个解释器...
  • 我们常见到python文件的前两行都会写上如下两行代码,下面我分别解释这两条语句的意义.../usr/bin/env python # -*- coding:utf-8 -*- 或者 #!/usr/bin/python # -*- coding:utf-8 -*- 一、#!/usr/bin/python...
  •   通常安装python(以unix为例),会将python的执行文件安装在/usr/local/bin 子目录下,库文件安装在/usr/local/lib/python2.x或3.x 子目录下。当运行python的.py文件时需要给其指定python的可执行文件。 二、解释 ...
  • #!/usr/bin/env 的意义

    2021-05-30 20:26:41
    /usr/bin/env python 等等 这样写的意义是: 通过/usr/bin/env 运行程序,用户不需要去寻找程序在系统中的位置(因为在不同的系统,命令或程序存放的位置可能不同),只要程序在你的$PATH中; 通过/usr/bin/env ...
  • 脚本语言的第一行,目的就是指出,你想要你的这个文件中的代码用.../usr/bin/env python这种用法是为了防止操作系统用户没有将python装在默认的/usr/bin路径里。当系统看到这一行的时候,首先会到env设置里查找pyth...
  • /usr/bin/env/ python3 表示从env设置里查找python的安装路径,再调用对应路径下的解释器程序完成操作。 (推荐此种方法。因为这样写,你的脚本换台机器照样是可直接执行的。) #!/usr/local/python3/bin/...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 129,185
精华内容 51,674
关键字:

#!/usr/bin/envpython3

python 订阅