在Ubuntu20.04中的shebang

在Ubuntu20.04中使用Python。

Ubuntu 20.04发布了。我立刻玩了一下并进行了调查,发现标准安装中已经包含了Python3.8。但是,使用python关键字无法启动,需要使用python3来启动。通常情况下这不是问题,但是当想要使用shebang功能将其作为执行文件运行时就会遇到困难。现在该怎么办呢?为了解决这个问题,我进行了一些调查。

“shebang”的写法示例

我在进行了一些搜索之后,发现在Perl、Python和Ruby脚本中,有关正确shebang写法的信息。似乎有一种方法是通过启动/bin/sh,并使用exec命令来启动python。我稍微做了一些修改尝试。

\#!/bin/sh
""":" .

if [ -x python ] ; then
    exec python "$0" ${1+"$@"}
else
    exec python3 "$0" ${1+"$@"}
fi

"""

import sys

__doc__ = """
The above defines the script's __doc__ string. You can fix it by like this."""

def main():
    print('exec ok')
    for v in sys.argv:
        print(v)

if __name__ == '__main__':
    main()

总之,通过这样做,无论是在Python还是Python3上,都可以启动了。
……但是,我不太清楚是否有必要这样做(^^ゞ

CentOS8 – 这是一个选项

CentOS8没有预装Python/Python3,所以无法启动。
Yum/DNF似乎依赖于platform-python来启动,但如果要做到这一点,或许应该考虑使用虚拟环境(如venv)来运行,不知道这样想是否正确。

如果安装了python-is-python3软件包,它就会启动。↩

就是最前面的那一行#!/usr/bin/env python。↩

原本是处理没有/usr/bin/env的情况。↩

头部的”””:”有什么意思呢?↩