#!/usr/bin/python3.5
の バージョンを表す数字を気にすることがない。
通常実行する場合、3.5であろうが3.6でもエラーが出力されない。
しかし、外部プログラムとして呼び出す場合、使用中の python バーションと一致していなければ、次のエラーが出力される。
呼び出されるプログラム名: not found
具体的には
呼び出されるプログラム
▶ abc.py
#!/usr/bin/python3.5
# -*- coding: utf-8 -*-
import sys
args = sys.argv
print ("予選リーグ突破 おめでとう! ")
# args[0] フルパスのプログラム名
# args[1] プログラム名への文字渡し
print ("えっ 何! ", args[1])
呼び出す方のプログラム
▶ efg.py
import os
import subprocess
mdir = os.path.abspath(os.path.dirname(__file__)) + "/"
sub_mdir = "lib_a/"
pro_name = "abc.py"
# 外部プログラム呼び出し 戻り値 result
result = subprocess.run(mdir + sub_mdir
+ pro_name + " 大迫半端ない", shell=True)
print (result)
# 正常に終了したときの 戻り値
# CompletedProcess(args=('/home/220.../...../
lib_a/abc.py', '大迫半端ない'), returncode=0)
if result.returncode != 0:
# エラー時の処理 returncode が 0 以外
print ("こらぁ〜 エラーいことになっとるぞ!")
使用のpython バージョンが 3.6 であれば、次のエラーが出力される
/b......: 1 /home/22...../......../lib_a/abc.py: not foundCompletedProcess(args='/home/22...../......../lib_a
/abc.py 大迫半端ない', returncode=127)
こらぁ〜 エラーいことになっとるぞ!
/abc.py 大迫半端ない', returncode=127)
こらぁ〜 エラーいことになっとるぞ!
abc.py は見つからない( not found )というエラーが返ってくる。
#!/usr/bin/python3.6
と書き換えるとことによって、エラーが解消される。
正常に実行されれば
予選リーグ突破 おめでとう! abc.py
えっ 何! 大迫半端ない
CompletedProcess(args='/home/220.../.../lib_a/abc.py 大迫半端ない', returncode=0)
えっ 何! 大迫半端ない
CompletedProcess(args='/home/220.../.../lib_a/abc.py 大迫半端ない', returncode=0)
と正常に終了する。