一連のPythonプログラムが与えられた場合:
/tool/a.py
/tool/b.py
/tool/c.py
/tool/d.py
...
共有ネットワークディレクトリに保存され、混合環境(Solarisおよびさまざまな種類のLinux)で実行され、ユーザーの$ PATHに含まれておらず、同じ場所にインストールされていない可能性のある特定のPythonバージョンが必要です。さまざまな種類のマシン。
プログラムはどのPythonインタープリターを使用するかをどのように指定できますか?
私が検討した代替案:
現在のタイプのマシンに適切なPythonインタープリターを起動するPythonラッパーを参照する各Pythonプログラムのシバン。ただし、execveでは、ラッパー実行可能ファイルをシェルスクリプトとして実装することはできません。また、各マシンのネイティブ実行可能ファイルをコンパイルするには、多くのメンテナンスが必要になります。
Pythonプログラムごとに起動シェルスクリプトを作成します。すべてのシェルスクリプトは、Pythonインタープリターを選択するための同じロジックを共有する場合がありますが、可能であれば、Pythonプログラムごとに個別のシェルスクリプトを使用することは避けたいと思います。
次のように、シェルスクリプトとPythonプログラムの両方として各プログラムを実行できるようにするために、ある種のハックを作成します。
"""exec" /tool/python_wrapper "$0" "$@" """#" def foo(): print "foo" foo()
他にアイデアはありますか?