Python 3이 기본 Python 바이너리가 아닌 이유는 무엇입니까?


42

내가 입력 python터미널 창에서. Python 3.5가 아닌 Python 2.7을 얻습니다. 문서에 따르면 Python 3.5가 미리로드되어 있어야합니다.


1
"python3 -m venv my-venv"를 사용하여 가상 환경을 설정 한 경우 모든 터미널에서 "source ... / my-env / bin / activate"를 호출하여 해당 가상 환경을 활성화하면 python 3.5가 해당 터미널에서 기본값입니다. "python -V"를 호출하여 현재 기본 버전을 확인할 수 있습니다.
크레이그

귀하의 답변이 도움이되는 동안 나는 그 이유를 물었습니다. 방법이 아닙니다. 그리고 그것은 큰 논쟁입니다. 이리. 현재 버전 대신 기본적으로 이전 버전을 사용해야하는 이유는 무엇입니까?
givonz

1
당신은 내 "댓글"에 대해 정확히 맞습니다! 그래서 나는 답변이 아닌 의견을 썼습니다.
크레이그 cks 스

답변:


56

나는 당신이 읽고있는 "docs"나 그들이 무엇을 말하는지 모르지만, /usr/bin/python이것은 파이썬의 기본 버전 (이 경우 2.7)에 대한 상징적 링크 일뿐 python입니다. 이는 터미널에 입력 한 결과입니다 . 이 결과입니다 PEP (394) 를 정의하는

  • 당분간 모든 분포 python는와 동일한 목표 를 참조 해야합니다python2 .

type pythonfile /usr/bin/python이를 확인합니다.

이 규칙이 규칙 이외의 다른 이유 는 Xenial 의 소스 패키지 python-defaults가 버전 2.7.11 이므로 python 기호 링크가이 버전을 가리 키기 때문 입니다.

python 3을 사용하려면 명시 적이어야 python3하고 명령 행에 입력 해야합니다. 특정 버전이 필요한 경우에 권장됩니다 python2. python 2를 입력하여 입력 할 수도 있습니다 . 우분투에는 모든 현재 버전에서 기본적으로 파이썬 2와 3 버전이 모두 포함되어 있습니다.

있다 마이그레이션 파이썬 3에 이르기까지 계획 하고 기본값으로 마킹.


이것은 아마도 zeitgeiigeist-python3에 의존하지만 그것을 찾을 수없는 rhythmbox-zeitgeist 플러그인을 깨뜨릴 것입니다.
Khurshid Alam

2
이것은 OP가 의미 하는 문서 입니다.
SaidbakR

10

Python 3.5 REPL을 얻거나 호환되는 스크립트를 실행하려면을 입력하십시오 python3. 이것은 모든 기존 python 2.x와의 호환성을 유지하기위한 것 python입니다.

대시 는 터미널을 열고 REPL을 시작 python하기 위해 .desktop파일을 설정했는지 () 찾을 수 있습니다 ~/.local/share/applications/. 파이썬을위한 기본 GUI REPL 환경은 없으며, 일반적인 인터페이스는 사용자가 터미널을 방문 할 것으로 예상됩니다.

python 3.5가 기본값이라는 이야기는 모든 시스템 스크립트를 python 2.x에서 python 3.x로 포팅하는 관리자입니다. 파이썬 3이 모든 경우에 파이썬 2를 대체하지는 않습니다.


그래서 올바른 질문이라고 생각합니다 .python3을 경로에 추가하여 자동으로 실행되도록하려면 어떻게해야합니까?
givonz

파이썬 스크립트를 컴파일 된 프로그램처럼 실행하려면 어떻게해야합니까?
Andrew Keech

고마워 명령 프롬프트에서 python3을 입력하십시오.
givonz

2
AIUI가 장기적으로 / usr / bin / python으로 무엇을해야하는지에 대해서는 여전히 의문의 여지가 있습니다. python2 스크립트의 모범 사례는 python2를 명시 적으로 사용하는 것입니다.
Peter Green

1
스크립트에서 #!/usr/bin/python3(또는 #!/usr/bin/python2)를 사용하는 대신 #!/usr/bin/env python3원격 이식을 원할 경우 ( 특히 파이썬 전용)을 사용하는 것이 좋습니다 . 대부분의 경우이 문서는 단지 문서 일뿐입니다. 대부분의 경우 $ python3 your_pyprogram.py어쨌든 사용하여 호출되기 때문입니다.
마이클

4

기본 Python을로 사용할 수 있다고 가정합니다 python. 그 가정은 틀렸다.

Python 3이 "사전로드"되어 있고 Python 2가 전혀 python3없는 시스템에는 오직 , 그리고 python.

Python 3 용으로 작성된 코드는 항상이라는 인터프리터를 찾아야합니다 python3. Python 2 용으로 작성된 코드는 역사적으로을 찾습니다 python.

지금부터 아마도 수십 년, 시점이 올 수있는 곳이 거의 아무도, 파이썬이 기억하는 경우 python를 참조하기 시작하지 있습니다 python3. 이것은 순전히 편의를위한 것이며, 조만간 완료 될 수 없으며 그렇게해서는 안됩니다! 다음과 같은 영향으로 인해 서두르지 않습니다.

"현재 이전"시스템에 대한 지식이없는 것입니다 python2python, 그래서 파이썬 2 코드를 찾고 유지하는 완벽한 의미가 있습니다 python. 이것이 python“파이썬 2 코드가 존재하는 한”파이썬 2를 참조해야하는 이유 입니다.

파이썬 2 용으로 작성된 새로운 코드는 이해가된다면 완벽하게 찾을 수 있습니다 python. 또한 python2파이썬 3 인식 및 잘 정리 된 시스템 (그러한 링크를 제공해야 함)에서만 실행되도록하려면을 찾을 수도 있습니다 .

사용하여 파이썬 2 코드의 장점 python2은 한 번 더 추가 접촉이 필요 없다는 것입니다 python참조 시작 python3결코 일어나지 않을 수도있는, 또는 한 번 python또는 발생하지 않을 수 있습니다 전혀 사라집니다. (파이썬이 코드는 가상 파이썬 (4)의 통역으로 인기가된다 후에 죽으면 즉, 진정한 올 수도 python4-.이 중 하나를 가리 키셔서 때문에 python3또는 python4모두 혼동 될 것이다.)


2

Python 2.x, 3.x 버전을 모두 사용할 수 있습니다. python 2.x를 가리키는대로 python을 호출하면 python 2.x 가로 드됩니다.

아래 이미지가 도움이 될 것입니다.

여기에 이미지 설명을 입력하십시오


1
같은 명령을 어떻게 입력하고 두 가지 다른 결과를 얻습니까?
givonz

3
두 번째 호출의 다른 출력 은 autocompleter를 쿼리하는 데 python사용 <tab>하는 것입니다. 그러면 자동 완성 기능 을 사용 하여 가능한 순열을 출력하고 python*새 프롬프트로 돌아갑니다.
Andrew Keech

@ givonz, 흠 나는 Tab 키를 사용했습니다. 출력되지 않습니다. 가능한 이진 패턴입니다.
rɑːdʒɑ

무엇에 대한 부정적인 투표?
rɑːdʒɑ

1
나는 공감하지는 않았지만 대답은 왜 두 개의 첫 번째 출력이 다른지, 그리고 apt-cache특히 우분투 초보자 의 역할이 무엇인지 설명해야한다고 생각합니다 .
AL

2

Python 3.x는 16.04와 함께 작동해야합니다. 실제로 실제로 작동합니다. 나는 Ubuntu 14.04를 가지고 있으며 Python 3.4.3을 가지고 있습니다-그것을 테스트하기 위해해야 ​​할 일은 입력 한 python3것이고 실행중인 버전을 알려 주어야합니다.


2
글쎄, 나는 OS 컴퓨터 과학을 사용하여 전화하지 않을 것이다. 엄밀히 말하면, Ubuntu는 Linux 기반 OS이며 Unix 기반이 아닙니다.
magu_

나는 리눅스와 유닉스에 대한 몇 가지 명령 프롬프트와는 다르지만 밀접하게 단어 명령을 이해하지 못했습니다. 비록 GUI는 내가 solaris에서 보는 것보다 훨씬 더 진보되어 있지만.
givonz

1
-1 왜이 문제에 대해서는 다루지 않습니다 .
David Foerster 16:26에
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.