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

Lau*_*ebs 5 python posix shebang python-3.x

例如:

testvar = "test"
print(f"The variable contains \"{testvar}\"")
Run Code Online (Sandbox Code Playgroud)

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

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

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

编辑:

我不是说怎么办好呢,当然你可能只是明确地说:"与python3.6运行这个并起来",但什么是确保该程序只与某个版本跑步的正确方式或更新版本使用时./scriptname.py

gle*_*ant 5

您需要将脚本分成 2 个模块以避免 SyntaxError:第一个是检查 Python 版本并在 Python 版本不工作时导入 app 模块的入口点。

# 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)
Run Code Online (Sandbox Code Playgroud)

和另一个:

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