美文网首页
python脚本指定解释器

python脚本指定解释器

作者: ThinkingCoding | 来源:发表于2019-04-09 08:43 被阅读0次

    在 Python 脚本的第一行经常见到这样的注释:#!/usr/bin/env python3或者#!/usr/bin/python3,其目的就是指定该python脚本需要用到的解释器是python。

    语法

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

    语法格式:

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

    那么,这两者有区别吗?

    • #!/usr/bin/python3
      用绝对路径的格式指定解释器,上面表示当前系统中 python3 解释器所处的绝对路径就是 /usr/bin/python3。

    弊端:
    如果当前系统 python 解释器不在该路径下的话, 脚本将无法执行了!
    之所以有这种写法, 是因为在类 Unix 系统中, python 解释器通常位于这个路径。

    • #!/usr/bin/env/ python3
      从 "PATH 环境变量"中查找 python3 解释器的位置, 再调用该路径下的解释器来执行脚本。

    因此,#!/usr/bin/env python3 的写法更灵活更具有通用性,推荐使用这种写法。

    作用

    在 "Unix -like 系统"中 (比如Linux, OS X等),如果是通过命令行 (shell) 执行脚本,有两种形式:

    1. 以命令行形式指定解释器: python3 ./script.py;
    2. 通过 shebang 来指定解释器。比如 python 脚本的第一行如果写上 #!/usr/bin/python3 或者是
      #!/usr/bin/env python3,就表示用 python3 解释器来执行, 然后用命令行直接调用文件。
      ./my_script.py, shell 会检查脚本的第一行代码, 发现有 shebang, 会按其指定的解释器来执行;

    注意:"命令行指定"比 "shebang 指定"优先级更高,即如果通过shebang指定了解释器,但是执行时又通过命令行指定一个解释器,那么以命令行指定为准。

    拓展

    在linux系统中经常碰到用shebang指定shell脚本的解释器。

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

    相关文章

      网友评论

          本文标题:python脚本指定解释器

          本文链接:https://www.haomeiwen.com/subject/qhvyiqtx.html