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 개발의 필수적인 부분이기 때문에 저는강하게최소한 기본은 마스터하는 것이 좋습니다!

관련 정보