インポートするスクリプトで定数を定義するのに役立つ引数を渡す nohup を使用して、bash で Python スクリプトを開始する必要があります。引数の受け渡しについては多くの質問がありますが、nohup を使用して成功する方法は見つかりませんでした。
私のbashスクリプトの簡略版:
#!/bin/bash
BUCKET=$1
echo $BUCKET
script='/home/path/to/script/script.py'
echo "starting $script with nohup"
nohup /usr/bin/python $script $BUCKET &
インポートしている構成スクリプトの関連部分:
FLAG = sys.argv[0]
if FLAG == "b1":
AWS_ACCESS_KEY_ID = "key"
BUCKET = "bucket1"
AWS_SECRET_ACCESS_KEY = "secret"
elif FLAG == "b2":
AWS_ACCESS_KEY_ID = "key"
BUCKET = "bucket2"
AWS_SECRET_ACCESS_KEY = "secret"
else:
AWS_ACCESS_KEY_ID = "key"
BUCKET = "bucket3"
AWS_SECRET_ACCESS_KEY = "secret"
それを使用しているスクリプト:
from config import BUCKET, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY
#do stuff with the values.
率直に言って、私は引数を script.py に渡しているので、それらがインポート スクリプトの範囲内にあるかどうか確信が持てません。とはいえ、nohup を使用せずに同様のアプローチを取ると、うまくいきます。