如何在使用次要版本的功能时编写shebang

时间:2018-02-14 11:30:47

标签: python python-3.x posix shebang

例如:

testvar = "test"
print(f"The variable contains \"{testvar}\"")

格式化的字符串文字是在python3.6中引入的

如果我使用#!/usr/bin/env python3,如果安装了旧版本的python,则会抛出语法错误。
如果我使用#!/usr/bin/env python3.6,如果没有安装python3.6,它就不会工作,但是更新的版本是。

如何确保我的程序在特定版本上运行?如果使用python3,我无法检查版本,因为它甚至不会在较低版本上启动。

修改:

我不是指如何运行它,当然你可以明确地说"用python3.6和up"来运行它,但是确保程序是正确的正确方法是什么使用./scriptname.py时,仅使用特定版本 或更新 运行?

1 个答案:

答案 0 :(得分:3)

您需要在两个模块中拆分脚本以避免SyntaxError:第一个是检查Python版本的入口点,如果python版本不是作业,则导入应用程序模块。

# main.py: entry point
import sys

if sys.version_info > (3, 6):
    import app
    app.do_the_job()
else:
    print("You need Python 3.6 or newer. Sorry")
    sys.exit(1)

另一个:

# app.py
...
def do_the_job():
    ...
    testvar = "test"
    ...
    print(f"The variable contains \"{testvar}\"")