2013-03-02 2 views
1

Python 프로그램이 스크립트로 호출되는 대신 Unix 시스템에서 실행 파일로 실행되었는지 어떻게 결정할 수 있습니까? 대신 sys.argv[0]에서스크립트가 '직접 실행'되거나 파이썬 실행 파일로 실행되는 시점을 구별

python ./program.py 

'/ 프로그램'의

./program.py 

은 예제의 경우 구별 할 수 없습니다.

+0

나는 이것이 가능하다고 생각하지 않습니다. 유닉스는이 경우를 구별하지 않는다. 셸은'#!/usr/bin/env python' 쉘 라인을 만날 때'python program.py'를 실행할 것이다. – millimoose

+1

이 지식은 어떤 유형의 문제를 해결합니까? 당신은 정말로 무엇을 성취하려고합니까? –

답변

1

다소 hackish 솔루션은 program.py의 오두막 라인이 나타내는 환경 변수를 추가 할 것입니다 :

#!/usr/bin/env noscript=True python 
import os 
if os.getenv('noscript'): 
    print("called as executable") 
else: 
    print("called as script") 
0

정말 구별이 없습니다. 실행 가능 비트를 설정하면, os는 궁극적으로 사용자가 명령 행에서 수행하는 작업을 정확히 수행합니다. python script.py입니다. 유일한 차이점은 os가 #!으로 시작하는 첫 번째 줄을보고 실행할 Python의 버전을 정확하게 결정한다는 것입니다.