2012-10-28 2 views
0

Snow Leopard의 Python 기본 버전은 2.6입니다. 파이썬 웹 사이트에서 32 비트와 64 비트 버전의 파이썬 (일부 라이브러리에 유용함)을 설치 한 설치 프로그램을 사용하여 3.2로 업그레이드하기로 결정했습니다.Python 버전 3.2는 프롬프트에서 2.6, 스크립트에서는 2.6입니다.

문제는 3.2와 같은 my python 스크립트가 2.6으로 해석된다는 것입니다. 내 파이썬 쉘 3.2로 해석 내가 쓴 것은 말이되지 않을 수 있습니다.

그래서 나는이라는 스크립트가 : 나는 그것을 실행하면

#!/usr/bin/python 
import sys 
print(sys.version)#note the python 3 syntax 

난이 얻을 :

: 나는 파이썬 프롬프트에서 같은 일을 실행하면

$ ./test.py 
2.6.1 (r261:67515, Jun 24 2010, 21:47:49) 
[GCC 4.2.1 (Apple Inc. build 5646)] 

나는이를 얻을 수

$python 
Python 3.2.3 (v3.2.3:3d0686d90f55, Apr 10 2012, 11:25:50) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import sys 
>>> print(sys.version) 
3.2.3 (v3.2.3:3d0686d90f55, Apr 10 2012, 11:25:50) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] 
>>> 

질문은 어떻게 수정합니까? 설치 문제라고 생각합니다. 이름을 더 유용하게 편집했습니다.

+1

'python'은 python 2를 실행해야합니다; 파이썬 3 바이너리는'python3'이라고해야합니다. 이 효과에 대한 최근 PEP가 있습니다. – geoffspear

답변

1

명령 줄에 which python을 입력하고 결과를보고하십시오. 나는 당신의 경로가 어떤 이유로 파이썬 3.3을 찾고 있고 /usr/bin/python과 같은 것이 아닐 것이라고 생각합니다. 그것들이 다른 경우 스크립트에서 #!/usr/bin/env python을 사용하여 절대 경로 대신 경로 env 변수를 사용하여 Python을 찾으십시오.

+0

당신의 충고에 따르면 :'$ which python /usr/bin/python ' 놀랄 일이 아닙니다. – Muricula

+0

... 흠! 그것은 예상치 못한 일입니다! 스크립트의 첫 번째 줄을'#!/usr/bin/env python'으로 바꾸고 그 것이 도움이되는지를 보았습니까? –

+0

필자가 제안한대로 첫 번째 행을'#!/usr/bin/env python'으로 변경하여 테스트 스크립트를 수정했습니다. 그것은 내 문제를 해결하지 못했습니다. – Muricula

0

경로 (/ usr/bin 또는/usr/local/bin)의 우선 순위를 이해하는 것이 중요합니다. '파이썬'이 터미널에서 무엇을 나타낼 수 있습니까? .bash_profile을 편집하고 새로운 파이썬 바이너리의 경로를 추가하고 #!/usr/bin/python을 #!/usr/local /과 같은 새로운 파이썬을 가리 키도록 변경해야합니다. bin/python - 설치 프로그램이 Python 3.x를 설치할 때마다

+0

다음은 자동 마이그레이션 도구가 .bash_profile의 끝에 추가 된 내용입니다. '$ cat ~/.bash_profile | 파이썬 3.2 번호 꼬리 # 설정 경로는 orginal 한 버전은 .bash_profile.pysave PATH에 = 저장됩니다 "/ 라이브러리/프레임 워크/Python.framework/버전/3.2/빈 : $ {PATH}" 수출 PATH 별칭 ' python '='python3.2 ' ' – Muricula

0

나는 여전히 스크립트에서 Python을 실행하면 나에게 2.6 Python이 주어 졌는지 알지 못한다. 프롬프트에서 Python을 실행하면 3.2 Python이 나온다. 나는 그것을 고쳤다. 파이썬 3 바이너리를 발견하고 /usr/bin에 문제가있는 파이썬 바이너리의 이름을 변경했습니다. 그렇다면 /usr/bin/python에서 /Library/Frameworks/Python.framework/Versions/3.2/bin/python3

까지 심볼릭 링크를 만들었습니다. 원래 문제는 무엇인지 궁금하지만 지금은 해결되었습니다.

1

당신이 당신의 .bash_profile의 끝에서, 당신의 설명에 쓴에 ​​따르면 별명이 정의되어있다 :

alias python=python3.2 

이 범인입니다. 그것을 떨어 뜨리는 것을 고려하면 더 투명하고 직관적 인 상황이됩니다.

"파이썬"(별칭은/usr/bin /이라고 가정)은 알리아스를 인식하지 못하기 때문에 사용자의 신비를 해결하지 못했습니다. 그것은 오직 당신의 경로에서 파이썬 바이너리를 찾습니다.