5

それらを実行する python バイナリを指定する必要があるスクリプトがいくつかあります。

#! /home/nargle/python/bin/python2.6

これらのスクリプトを 2 つの異なるサイトで機能するように調整する必要があります。多くのツールがさまざまな場所にインストールされているため、新しいサイト 2 ではスクリプトを次のように開始する必要があります。

#! /user/nargle/python/bin/python2.6
..

直接引用されたパスを、サイトごとに異なる設定の環境変数に置き換えたいと考えています。私が望むのは、これが機能することです:

#! $MY_PYTHON_PATH

しかし、そうではありません!私はこれをどこで研究するかについて少しぼんやりしています。「#!」を検出するのは実行中のシェル (bash、csh など) ですか? スクリプトの開始時に(bash、pythonなど)、インタープリター/シェルを起動して実行しますか?

これを行うには何らかの方法が必要であると感じています。お知らせ下さい!

そうそう、もう 1 つ制約があります。これにはパスを使用できません。これはばかげた制限のように思えるかもしれませんが、これは多くのユーザーがいる大規模な環境向けです。

環境はRHEL5.7です。

編集シェルスクリプトを使用することが提案されており、それが現在の計画です:それは正常に動作します:

 $MY_PYTHON_PATH some_script file.py $@

問題は、多くの人が python ファイルを使用していることと、変更が必要な自動化されたテストがたくさんあることです。やらなければならないのならやらなければならないのですが、可能であれば、私は労働慣行の変更が何十人もの人々に与える影響を最小限に抑えたいと思っています。

EDIT両方のシステムで同じ場所にリンクを作成し、各システムの異なるターゲットにある実際のバイナリにリンクすることもできます。これは非常に実現可能ですが、ややこしいようです: Linux の「モジュール」パッケージを使用して、多くのツールの環境変数をセットアップします。モジュール ファイルから python パスを取得できれば便利です。

編集それは答えではありませんが、これは私が探していた一種の邪悪なハックのように感じます: http://docs.nscl.msu.edu/daq/bluebook/html/x3237.html ..「例4-2を参照してください. #! bash および tclsh の行"

編集これがうまくいくことを望んでいましたが、うまくいきませんでした:

!# /usr/bin/env PATH=$PATH:$MY_PYTHON_PATH python2.6
4

4 に答える 4

5

一般的な解決策は、シバンを次のように変更することです

#!/usr/bin/env python2.6

次に、各マシンで正しい python2.6 を指すように $PATH を調整します。

于 2013-01-24T10:08:25.587 に答える
0

私はばかげていました:envで変数展開を使用するとうまくいきます。

#! /usr/bin/env PATH="$PATH:$MY_PYTHON_PATH" python2.6
于 2013-01-24T15:10:50.177 に答える
0

我々はできる:

#!/bin/bash
"exec" "python" "$0"

print "Hello World"

http://rosettacode.org/wiki/Multiline_shebang#Pythonから

于 2013-01-24T16:18:16.577 に答える