makeコマンドでPythonスクリプトを呼び出す

makeコマンドでPythonスクリプトを呼び出す

5つのPythonスクリプトを含むツールがあります。パイパイパイd.pyそしてパイ。このプログラムはLinuxで実行する必要があります。パイ別のファイルをインポートして使用するプログラムです。 A.pyを実行するには、次のコマンドを使用します。

$pythonA.py

これまで、入出力パスはA.pyにハードコードされていました。もう一つ使うべきです。ファイルの生成すべてのファイル構造と依存関係を含みます。 makefileにはpython scrip A.pyを実行するコマンドも含める必要があります。コマンドが呼び出され、make makefileツールの実行が開始されたら、必要な入出力パスを知る必要があります。どうすればいいですか?

編集する:

makefile は、すべての詳細を含め、次のようにする必要があります。

INPUT_PATH = list of all input paths
FILES = list of .c files located in the above specified paths
OUTPUT_PATH = output path where generated file has to be stored
command to execute python scrip:
   A.py inputpath+filename outputpath

したがって、新しい入力.cファイルがあるたびにmakefileリストに追加されます。そのようなサンプルメイクファイルを提案できますか?

答え1

Pythonでは、代わりにコマンドライン引数を取得できますsys.argv

#!/usr/bin/env python
base_dir = /hard/coded/path

あなたは:

#!/usr/bin/env python
import sys
base_dir = sys.argv[1]

(小切手を入れるのが適切かもしれません)。 Pythonランチャーを明示的に使用している場合は最初の行を省略できますが、実行可能ファイルを作成する場合はその行が必要なため、そこにいても害はA.pyありません。

これで、次からmakefile指定できます。

default:
        python A.py /hard/coded/path

Tab(前に8マスではなく1マスがあることを確認してくださいpython。)

その後、実行できます(Gnu make aがない場合、または同じディレクトリにない限り、これをmake行う必要はありません)。make makefileMakefileGNUmakefile

答え2

ここで私は最もエレガントなアプローチを見つけました。ファイルの生成

スピード:

  • ここで変数を定義するには、次のようにします。Browser_PYSCRIPT
  • 呼び出すPython(またはすべての言語)スクリプトを入力します。
  • エクスポートを使用したスクリプトのエクスポート
  • python -c "$$BROWSER_PYSCRIPT"を使用してスクリプトを実行します。

生成されたファイルを実行します。

使いやすい:

  • ブラウザを作成してください
    define BROWSER_PYSCRIPT
    import sys, os
    print ('sys.argv[0] =', sys.argv[0])
    pathname = os.path.dirname(sys.argv[0])
    print ('path =', pathname)
    print ('full path =', os.path.abspath(pathname))
    endef
    export BROWSER_PYSCRIPT
    BROWSER:
           python -c "$$BROWSER_PYSCRIPT"

結果:

    -> make BROWSER                                                                                                    [Thu Jun 11 23:13:45 2020]
python -c "$BROWSER_PYSCRIPT"
sys.argv[0] = -c
path =
full path = /Users/myPC/Desktop

答え3

基本書を必ずお読みください。ファイル生成チュートリアル

基本的には、このような場合、変数のように動作するマクロにパスを置くことです。

たとえばDIR=/your/path

手順は次のとおりです。

directive:
        command

ディレクティブの名前がある場合default、そうでなければallコマンドラインからディレクティブを明示的に呼び出さずに実行されます。make directiveしたがって、に電話する必要はありませんmake

今コマンドの前のスペースは〜しなければならないタブ文字です。またMakefile、を入力して呼び出すためにmakefileの名前(大文字の「M」)を指定することをお勧めしますmake

スクリプトはコマンドライン引数(この場合はディレクトリ)を受け取る必要があり、次のように呼び出すことができます。

        python A.py $(DIR)

DIR正しいディレクトリ名を持つマクロとして。

また、次の内容をお読みください。GNU製作マニュアル

もちろん、Makefileにはこの範囲で説明するよりもはるかに多くの内容があります。 makefileはLinux開発の不可欠な部分なので、私は強く少なくとも基本はマスターすることをお勧めします!

関連情報