代码之家  ›  专栏  ›  技术社区  ›  Chris Jefferson

在python 3中执行当前python脚本

  •  0
  • Chris Jefferson  · 技术社区  · 6 年前

    我有一个python程序,我已经在python 2和python 3中使用过,它在python3中有更多的功能(使用新的python3特性)。

    我的脚本当前开始 #!/usr/bin/env python ,因为这似乎是python可执行文件最可能的名称。但是,我想做的是“如果python3存在,那么使用它,如果不使用python”。

    我希望不必分发多个文件/和额外的脚本(目前我的程序是一个分布式python文件)。

    如果python3中存在当前脚本,是否有一种简单的方法来运行它?

    3 回复  |  直到 6 年前
        1
  •  1
  •   r.ook jpp    6 年前

    另一个更好的方法是从 this question 是为了检查 sys.version :

    import sys
    py_ver = sys.version[0]
    

    原始答案:可能不是最好的方法,但是一种方法是对一个只存在于python的一个版本中的函数进行测试,以了解您正在运行的是什么。

    try:
        raw_input
        py_ver = 2
    
    except NameError:
        py_ver = 3
    
    if py_ver==2:
       ... Python 2 stuff
    
    elif py_ver==3:
       ... Python 3 stuff
    
        2
  •  0
  •   Krilosax    6 年前

    尝试使用sys包中的版本信息

        3
  •  0
  •   user8408080 Gilad Naor    6 年前

    也许我没有得到你想要的。我明白了:你想看看电脑上是否安装了python 3,如果有的话,就使用它。在脚本内部,可以检查版本 sys.version 正如空手人所说。要获得最新版本,您可能需要使用这样的小bash脚本

    py_versions=($(ls /usr/bin | grep 'python[0-9]\.[0-9]$'))
    ${py_versions[-1]} your_script.py
    

    这将搜索 ls 用于所有python版本并将其存储在 py_versions . 谢天谢地,输出已经排序,因此数组中的最后一个元素将是最新版本。