LoginSignup
0
0

More than 3 years have passed since last update.

Ubuntu20.04でのshebang

Posted at

Ubuntu20.04でのPython

Ubuntu 20.04が出ました。
早速遊んで調査してみたところ、標準インストールではPython3.8が入るようです。
ですが、pythonじゃ起動しません、python3で起動します。1
普通は困らないのですが、shebang2の機能を使って実行ファイルとして起動させたいときはちょっと困ります。
さて、どうしよう?と言うことで少し調べてみました。

shebangの書き方例

いろいろと検索してみたら、Perl, Python 及び Ruby スクリプトにおける正しいshebangの書き方てのがありました。
/bin/shを起動してexecでpythonを起動させる方法3みたいです。4
これをちょっといじってみました。

\#!/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あたりの仮想環境で動くようにすれば良かったのに、と思わなくもありません。


  1. python-is-python3パッケージを入れれば起動します。 

  2. 先頭行の#!/usr/bin/env pythonとかですね。 

  3. 元々は/usr/bin/envが無い場合の方法っぽいですけど 

  4. 先頭部分の""":" .ってどういう意味だろう? 

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0