2012-11-14 1 views
7

Python 스크립트의 shebang (또는 마술 번호)에 이미있는 .pyc 파일을 만드는 것을 중단 할 수 있습니까? 작동하지Python이 shebang에서 pyc 파일을 생성하는 것을 중지하십시오.

:

#!/usr/bin/env python -B 
+1

@VajkHermecz, 아니 내 질문이 많이 좀더 구체적으로. –

+0

그래, 미안하면 더 좋은 용어 였을거야 ... 슬리 –

+1

그것이 중복과 다른 의미를 가지고 있기 때문에 재개하기위한 투표. – o11c

답변

4

, 우리는 파이썬 프로그램이 다소 POSIX 호환 시스템에서 실행되는 가정 (/ 빈/SH의 경우) 경우에만 예,이 작동합니다 :

이 ( 개선 glglgl의 입력 기준)

#!/bin/sh 
"exec" "python" "-B" "$0" "[email protected]" 

# The rest of the Python program follows below: 
+0

참고 사항 : 나중에 http://stackoverflow.com/a/9057699/193892로 개선하십시오. –

+0

멋집니다! '''는 쉘을위한 것이며 파이썬에 의해 무시됩니다 ... – glglgl

+1

구문 강조를 깨뜨립니다 ... – glglgl

3

아아, 아니. 속임수는 실행 파일과 하나의 매개 변수를 제공하는 것으로 제한됩니다.

그래서 env는 하나 개의 인수 대신 -Bpython 두 개의 인수로 현재 파일로 주어진 파일로 python -B을 실행하려고합니다.

원하는 목표를 달성 할 방법이 없습니다.

+2

재미있는 부분은 Python Windows Launcher가이 제한에 대해 알지 못하고 올바르게 (un) 옵션을 전달한다는 것입니다. 그래서 한 번 파이썬은 윈도우에서 더 잘 작동합니다.) – lqc

6

env를 사용하는 대신 그녀의 파이썬 인터 패스 패스를 직접 입력하는 것이 가능합니다.

#!/usr/bin/python -B 

당연히 이는 env를 사용하여 이식 할 때 얻을 수있는 이점 중 일부를 놓치게된다는 것을 의미합니다. wikipedia Shebang page의 env에서이 문제에 대한 토론이 있습니다. 그들은 python을 env 예제 중 하나로 사용합니다.

4

ENV에 대한 man 페이지에 따르면, 당신은 환경 변수를 설정 name=value을 전달할 수 있습니다. PYTHONDONTWRITEBYTECODE 환경 변수는 파이썬이 .py [co] 파일을 쓰지 못하도록합니다 (-B 플래그와 동일 함, python). 그래서

#!/usr/bin/env PYTHONDONTWRITEBYTECODE=1 python 

을 사용해야합니다.

편집이 :

나는 간단한 파이썬 스크립트로이 테스트 :

#!/usr/bin/env PYTHONDONTWRITEBYTECODE=1 python 
print 1 

다음

$chmod +x test.py 
$./test.py 
1 
$ls 
test.py 

(그러나 test.pyc되지 않음)

+1

저에게 스크립트는 단지 멈 춥니 다 ... –

+0

그냥'python -B script.py'와 함께 작동합니까? 방금 간단한 스크립트를 테스트하고 나에게 잘 작동하는 것처럼 보였습니다. – asmeurer

+1

나도. 이것은 작동하지 않는 것 같습니다. –