Pythonモジュールで使用されるsetup.pyに「ヘルパー」シェルスクリプトを含めるための最良の方法は何ですか?それ自体では実行されないため、スクリプトとしてisを含めたくありません。
また、data_filesは、インストールパス(モジュールのインストールパスではない)にあるものをコピーするだけなので、実際には最適なルートとは思えません。
私は質問だと思います:一般的な方法で非Python(非C)スクリプト/バイナリをPython distutilsパッケージに含める方法はありますか?
Pythonモジュールで使用されるsetup.pyに「ヘルパー」シェルスクリプトを含めるための最良の方法は何ですか?それ自体では実行されないため、スクリプトとしてisを含めたくありません。
また、data_filesは、インストールパス(モジュールのインストールパスではない)にあるものをコピーするだけなので、実際には最適なルートとは思えません。
私は質問だと思います:一般的な方法で非Python(非C)スクリプト/バイナリをPython distutilsパッケージに含める方法はありますか?
MANIFEST.inに次のように含めます。
include mycode/myscript.sh
ヘルパースクリプトを使用するPythonパッケージの例を次に示します。
https://github.com/pminkov/kubeutils
このファイルを見てください。シェルスクリプトが実行されます: https ://github.com/pminkov/kubeutils/blob/master/kubeutils/kutils.py
シェルスクリプトをパッケージ化する方法はないと思います。
私のプロジェクトの1つでは、Pythonスクリプトではなく、シェルスクリプトのみを除外する別のツールに、サブプロセスを介して引数として渡すシェルスクリプトが特に必要でした。
そこで、Pythonにmyscript.shをその場で書き出させることで、ようやくハッキングしました。
次のようになります。
bash_script_name = cwd + "/myscript.sh"
bash_script_file_obj = open(bash_script_name, 'w')
bash_script_file_obj.write(text_of_myscript)
bash_script_file_obj.close()
os.chmod(bash_script_name, 0755)
subprocess.call([another_tool, bash_script_name])
os.remove(bash_script_name)
あまりエレガントではありませんが、うまくいきました。Pythonでスクリプトを書くという選択肢があれば、私は間違いなくそれに賛成です。
もう1つの問題は、Bashスクリプトを含むそのようなpypiパッケージがWindowsなどで正しく実行されない可能性があることです。