쉘 스크립트 : 쉘 스크립트 내에서 파이썬 프로그램 실행


139

나는 답변을 인터넷 검색하려고했지만 운이 없다.

작품 슈퍼 컴퓨터 서버를 사용해야하지만 파이썬 스크립트를 실행하려면 셸 스크립트를 통해 실행해야합니다.

예를 들어 job.sh실행 하고 싶습니다.python_script.py

이것이 어떻게 이루어질 수 있습니까?


2
python python_script.py쉘 스크립트 를 넣으려고 했습니까 ?
thkala

python python_script.py. 또는 ./python_script.py대본이 shebang을 얻은 경우.

2
@delnan : ./python_script.py 또한 스크립트가 실행 가능해야합니다
thkala

정확히 무엇을 시도했고 무엇이 문제입니까? 당신은 구글 검색 그 좋은 일을하지 않았거나 당신이 우리에게 말하지 않은 것이 많이 있습니다 ...
thkala

3
이것은 다소 오래된 질문이지만 최선의 답변은 João Víctor의 답변입니다. 반드시 읽어주십시오.
Still.Tony

답변:


193

파이썬 실행 파일이 PATH 환경 변수에 있는지 확인한 다음 스크립트에 추가하십시오.

python path/to/the/python_script.py

세부:

  • job.sh 파일에 이것을 넣으십시오.
#!/bin/sh
python python_script.py
  • 스크립트를 실행 가능하게하려면이 명령을 실행하십시오. chmod u+x job.sh
  • 그것을 실행 : ./job.sh

2
시스템에 따라 다릅니다. Python 3은 기본 Python 런타임이거나 아닐 수 있습니다. 을 실행 python --version하여 확인할 수 있으며을 사용하여 버전을 시행 할 수 있습니다 python3 hello.py.
Jean-Bernard Jansen

팬더와 같이 이미 설치된 가져 오기를 찾지 못하면 어떻게해야합니까?
mah65

그것은 잘못된 파이썬 바이너리를 시작했거나 환경이 잘못되었음을 의미합니다. 이 경우 virtualenv를 채우고 실행 source PATH/TO/VENV/bin/activate한 다음python python_script.py
Jean-Bernard Jansen에서

자동화 에서이 작업을 수행하려고하는데 오류가 발생합니다. /path/to/Python: can't open file '/path/to/script': [Errno 1] Operation not permittedbash 스크립트 내에 파이썬 코드를 인라인으로 포함시키는 방법이 있습니까?
Keyslinger

111

방법 1-쉘 스크립트를 작성하십시오.

당신이 파이썬 파일이 있다고 가정 hello.py 라는 파일을 생성 job.sh하는 포함

#!/bin/bash
python hello.py

다음을 사용하여 실행 가능으로 표시하십시오.

$ chmod +x job.sh

그런 다음 실행

$ ./job.sh

방법 2 (더 나은)-파이썬 자체가 쉘에서 실행되도록하십시오.

스크립트를 수정 hello.py하고 이것을 첫 줄로 추가하십시오

#!/usr/bin/env python

다음을 사용하여 실행 가능으로 표시하십시오.

$ chmod +x hello.py

그런 다음 실행

$ ./hello.py

5
더 읽기 쉽게 답을 수정하십시오. 응답 편집기에서 101010 버튼을 사용하여 스크립트 내용을 코드로 표시 할 수 있습니다.
thkala

1
나는 항상 잊는다 #!/usr/bin/env python. 시스템에 맞는 파이썬 버전 + 경로를 참조하고 있는지 확인하십시오!
Still.Tony

10

임호, 쓰기

python /path/to/script.py

특히 요즘에는 매우 잘못되었습니다. 어떤 파이썬? 파이썬 2.6? 2.7? 3.0? 3.1? 대부분의 경우 파이썬 파일의 shebang 태그에 파이썬 버전을 지정해야합니다. 나는 사용하는 것이 좋습니다

#! / usr / bin / env python2 # 또는 python2.6 또는 python3 또는 python3.1
호환성을 위해.

이 경우 스크립트를 실행 가능하게하고 직접 호출하는 것이 훨씬 좋습니다.

#! / bin / bash

/path/to/script.py

이런 식으로 필요한 파이썬 버전은 하나의 파일로만 작성됩니다. 요즘 대부분의 시스템에는 python2 및 python3이 있으며 symlink pythonpython3 을 가리키는 반면 대부분의 사람들은 python2를 가리키는 것으로 예상합니다 .


1
과 같은 방법으로 매개 변수를 전달할 수 있습니까 python script.py param?
kristian

@kristian yes./abc.py -h

7

다음 프로그램을 다음과 같이 저장하십시오 print.py.

#!/usr/bin/python3
print('Hello World')

그런 다음 터미널에서 다음을 입력하십시오.

chmod +x print.py
./print.py

4

이것은 나에게 가장 효과적입니다 : 스크립트 맨 위에 이것을 추가하십시오 :

#!c:/Python27/python.exe

(C : \ Python27 \ python.exe는 내 컴퓨터에서 python.exe의 경로입니다.) 그런 다음 다음을 통해 스크립트를 실행하십시오.

chmod +x script-name.py && script-name.py

명확히하기 위해 이것은 Windows마다 다릅니다. 그리고 내가 사용하는 프롬프트는 Git bash입니다. 나는 그것이 매우 유용하다고 생각합니다. 특히 Windows 환경에서
peterb

4

이것은 나를 위해 작동합니다 :

  1. 새 쉘 파일 작업을 작성하십시오. 그럼 가정 해 봅시다 : touch job.sh및 실행 파이썬 스크립트에 명령을 추가 (당신은 심지어 파이썬에 명령 줄 인수를 추가 할 수 있습니다, 나는 보통 내 명령 줄 인수를 미리 정의).

    chmod +x job.sh

  2. 내부 job.sh에 다음 py 파일을 추가하십시오.

    python_file.py argument1 argument2 argument3 >> testpy-output.txt && echo "Done with python_file.py"

    python_file1.py argument1 argument2 argument3 >> testpy-output.txt && echo "Done with python_file1.py"

job.sh의 출력은 다음과 같아야합니다.

Done with python_file.py

Done with python_file1.py

나는 보통 미리 정의 된 다른 인수로 여러 파이썬 파일을 실행해야 할 때 이것을 사용합니다.

참고 : 여기에 무슨 일이 일어나고 있는지 간략히 살펴보십시오.

python_file.py argument1 argument2 argument3 >> testpy-output.txt && echo "completed with python_file.py" . 

  • 여기서 쉘 스크립트는 python_file.py 파일을 실행하고 런타임 에 여러 명령 행 인수 를 파이썬 파일에 추가합니다.
  • 이것은 반드시 명령 행 인수도 전달해야한다는 것을 의미하지는 않습니다.
  • python python_file.py평범하고 단순하게 사용할 수 있습니다 . 다음으로 >> 는이 .py 파일의 출력을 testpy-output.txt 파일에 인쇄하여 저장합니다.
  • && 는 위의 실행이 완료된 후에 만 ​​실행되는 논리 연산자 이며 "python_file.py로 완료된 선택적 에코 "가 런타임에 cli / 터미널에 에코됩니다.

4

python scriptname.py예를 들어 다음과 같이 호출 할 수 있어야합니다

# !/bin/bash

python /home/user/scriptname.py 

또한 스크립트에 실행할 권한이 있는지 확인하십시오.

을 사용하여 실행 가능하게 만들 수 있습니다 chmod u+x scriptname.py.


2

나는 이것을 사용하고 잘 작동한다

#/bin/bash
/usr/bin/python python python_script.py

1

다른 게시물은 모든 것을 말하기 때문에 (그리고 나는이 게시물을 우연히 발견하여 다음을 찾습니다).
다른 파이썬 스크립트에서 파이썬 스크립트를 실행하는 방법은 다음과 같습니다.

파이썬 2 :

execfile("somefile.py", global_vars, local_vars)

파이썬 3 :

with open("somefile.py") as f:
    code = compile(f.read(), "somefile.py", 'exec')
    exec(code, global_vars, local_vars)

다른 것을 제공하여 인수를 제공 할 수 있습니다 sys.argv

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.