'python'프로그램 명령으로 Python 3을 실행하는 방법은 무엇입니까?


331

python프로그램 명령 파이썬 파이썬 (2) (3)가 사용 실행할 수있는 실행 python3명령. python명령을 사용하여 Python 3을 어떻게 실행할 수 있습니까?


30
단지 경고 : 2.7 대신 python3을 가리 키도록 / usr / bin / python symlink를 변경하지 마십시오. 우분투 저장소에서 사용 가능한 많은 프로그램은 / usr / bin / python이 python 2.x와 호환되도록 요구합니다.
soulsource

1
아, 지금은 당신이 실제로 우분투 개발자가 노력하고 있습니다 ... 업그레이드 무엇을 의미하는지있어 : wiki.ubuntu.com/Python/3는 "바탕 화면의 CD에만 파이썬 3를 가지고 우분투 14.04 LTS의 출시 목표 이미지. "
soulsource

1
다른 말로, 파이썬 3을 기본으로 설정하는 방법을 배우려고하기 때문에 여기에 오는 사람은 가상 환경 (예 : virtualenv) 또는 컨테이너 (예 : LXC 또는 Docker)를 연구하는 데 사용할 수 있습니다.
Kevin

1
상단의 soulsource의 경고와 관련하여 PEP 394 를 참조하십시오. PEP 394 는 공존하는 Python 실행 파일에 대한 명명 규칙을 표준화하고 Python 프로그래머 및 패키지 관리자가 수행해야하는 (및) 의존해야합니다.
David Foerster 2018 년

2
가상 환경에서도 @wjandrea python는 의미로 유지되어야합니다 python2. 필자는 시스템의 Python 문제를 해결하는 대신 응용 프로그램 특정 Python 버전을 사용하는 방법으로 의견을 의미했습니다.
Kevin

답변:


370

간단한 안전한 방법은 별칭을 사용하는 것입니다. 이것을 파일 ~/.bashrc또는 ~/.bash_aliases파일에 넣으십시오 .

alias python=python3

파일에 위의 내용을 추가 한 후 source ~/.bashrc또는을 실행하십시오 source ~/.bash_aliases.

예를 들면 다음과 같습니다.

$ python --version
Python 2.7.6
$ python3 --version
Python 3.4.3
$ alias python=python3
$ python --version
Python 3.4.3

별명을 피하려면 command내장 명령을 사용하십시오 .

$ command python --version
Python 2.7.6

별명을 피하는 또 다른 방법 \은 명령 전에 사용 하는 것입니다.

$ \python --version 
Python 2.7.6

현재 쉘에서 별명을 사용 불가능하게하려면 unalias내장 명령을 사용하십시오 .

$ unalias python
$ python --version
Python 2.7.6

1
"업그레이드"옵션이 없습니다 .. ??
Giri

4
실제로 2.7을 지우고 3.3으로 바꾸고 싶습니다. 지금은 나쁜 생각 인 것 같습니다.
Giri

35
+1 3.3으로 작업하기 위해 2.7을 제거 할 이유가 없습니다. 많은 소프트웨어가 여전히 2.7에 의존하기 때문에; 그냥 주변에 머 무르십시오.
don.joey

6
@begueradj 별칭심볼릭 링크와 완전히 다릅니다 .
Radu Rădeanu

1
주의 사항 : 파이썬 2.7을 예상하는 다른 스크립트가 손상 될 수 있습니다.
kmiklas

85

[2016 년 6 월] 전환에 대한 권장 정보는 공식 우분투 파이썬 페이지입니다.


로부터 우분투 위키 :

우분투와 데비안 모두 파이썬 3을 배포판에서 기본 선호하는 파이썬 버전으로 만들기위한 지속적인 프로젝트 목표가 있습니다.

이것이 의미 하지 않는 것 :

  • /usr/bin/python파이썬 3를 가리 킵니다 아니, 이런 일이 않을 것입니다 (하지 않는 한 394 개 PEP 예측 가능한 미래에 대한 의문 인 지지자 기타). /usr/bin/python/usr/bin/python2파이썬 2.7을 가리 킵니다 및 /usr/bin/python3지원되는 최신 파이썬 3 버전을 가리 킵니다.

  • Python 2가 아카이브에서 제거됩니다. 아니요, 이런 일은 일어나지 않을 것 입니다. PEP 373이 2020 년까지 업스트림 버그 수정 유지 보수 지원을 약속 한다는 점을 감안하면 Python 2.7은 우분투에서 오랫동안 지원되고 사용 가능할 것으로 예상됩니다 .

다른 패키지 의존성으로 인해 심볼릭 링크를 변경하지 않는 것이 좋지만, 배포판에서 파이썬 3을 기본, 선호하는 파이썬 버전으로 만들기위한 지속적인 프로젝트 목표를 가지고 있습니다.


같은 CLI 사용의 경우, @Radu Rădeanu , 나는 사용자의 별칭을 두는 것이 좋습니다 ~/.bashrc, .bash_aliases(를 포함하여 다른 파일을, 파일 ~/.bash_profile, 적어도 한 번로드, 조직의 목적을 위해 주로하지만, 플랫폼에 따라 다를 수 있습니다). 파이썬 가상 환경 도 잘 작동합니다.

별명 예 :

alias python=python3

또는

alias python='/usr/bin/python3'

스크립트는 여전히 #!/usr/bin/env python3크로스 호환성 과 같은 것을 사용해야합니다 .

사용 env은 가상 환경과의 혼합 사용에 좋습니다.

참고 (@wjandrea 덕분에) : 별칭은 사용자 환경이 아닌 bash 런타임의 일부입니다. 따라서 Shebang ( #!) 에서는 사용할 수 없습니다 . 별명 python = python3을 선호하는 경우 program.pyshebang이없는 일부는 다음 과 같이 별명 해석기를 호출하여 실행될 수 있습니다 python program.py. 앨리어싱은 3.4 및 3.6과 같이 여러 버전의 python3을 함께 사용하는 시스템에도 유용 할 수 있습니다.


1
이것은 현재 오래된 것 같습니다 : 그들은 Xenial에서 python2를 제거하려고 계획했지만 그렇게하지 않았습니다.
OrangeDog 2016 년

1
@OrangeDog, 업데이트 주셔서 감사합니다. 예, 필자가 인용 한 wiki 페이지는 이제 Python 3으로 만 이전하기 위해 2 년 동안 더 많은 진전이 있었기 때문에 오래된 것으로 표시되었습니다.이 진행을 따르는 새 페이지는 공식 Ubuntu Python 페이지 입니다.
케빈

Xenial 계획과 관련하여 "최신"페이지도 오래되었습니다.
OrangeDog

"최근 업데이트되지 않았다"는 말과 같이 "오래된"내용은 아닙니다. 여전히 이에 대한 게시물을 유지하기위한 현재 위치 인 것 같습니다. 그러나 여기의 의견에서 다른 사람들이 찾을 수있는 다른 최근 출처에 감사드립니다. just로 변경하지 않는 이유에 대한 답변에 소스를 더 추가 python하는 것은 변환이 완료 될 때까지 실제로 관련이 없습니다. 그래도 문제가되지 않을 수 있습니다.
케빈

2
별명은 환경의 일부가 아닌 Bash 내부에 있으므로 여전히 python3세방에서 사용해야 python합니다.
wjandrea

28

업데이트 : 이것은 Python2와 Python3이 서로 호환되지 않기 때문에 내가 배운 잘못된 방법입니다.

명령 행 도구를 사용해 볼 수 있습니다 update-alternatives.

$ sudo update-alternatives --config python

"python에 대한 대안 없음"오류가 발생하면 다음 명령을 사용하여 대안을 직접 설정하십시오.

$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10

/usr/bin/python3원하는 파이썬 버전으로 경로 를 변경하십시오 .


19
python2 및 python3은 대안이 아닙니다. 이 목적으로 업데이트 대안을 사용하지 마십시오.
jobin

왜 그렇지 않습니까? update-alternatives파이썬에 적합하지 않은 이유를 설명해 주 시겠습니까? legacy.python.org/dev/peps/pep-0394 때문 입니까?
Dmitry Grigoryev

11
대안은 동일한 기능에 대해 다른 구현입니다. python2와 python3은 동일한 기능을 제공하지 않습니다.
Ely

다른 버전의 python3을 수동으로 (ppa 또는 기타를 통해) 설치 한 경우 이와 같은 작업을 수행 할 수 있습니다. sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 2
David Baucum

이것은 파이썬과 함께 제공되지 않는 18.04.2 vm에 필요한 작업입니다. 감사합니다
Dark Star1

9

우분투와 그 문제에 대한 나머지 Linux 배포판은 여전히 ​​많은 응용 프로그램과 명령에 대해 Python 2.7에 크게 의존합니다. "python"의 기본 참조를 Python 3.x로 변경하면 여러 Python 함수에서 어설 션 오류가 발생하기 시작합니다.

예를 들어, Ubuntu에서 파일을 직접 편집하고 '#! / usr / bin / env python2.7'을 참조하도록 shebang을 변경하지 않으면 하나의 'pip'가 더 이상 올바르게 실행되지 않습니다. Red Hat, Fedora 및 CentOS와 같은 RHEL (Red Hat Enterprise Linux) 버전에서 'Yum'명령은 Python 2.7에 의존합니다.

여기서 요점은 상당한 양의 코드가 어설 션 오류를 발생시키기 시작하여 터미널에 'python'을 입력하여 Python 3.x를 참조 할 수 있다는 것입니다.

터미널에서 'python3'명령을 사용하고 Python 3.x 파일에서 shebang '#! / usr / bin / env python3'을 사용하는 것이 훨씬 좋습니다.


2

하다

cd ~
gedit .bash_aliases

다음 중 하나를 작성하십시오

alias python=python3

또는

alias python='/usr/bin/python3'

파일을 저장하고 터미널을 닫았다가 다시여십시오.
링크


1

와 symlink /usr/bin/python할 수 있습니다python3

sudo ln -s /usr/bin/python3 /usr/bin/python

Python 2 및 pip2가 다음과 같은 종속성으로 설치되지 않도록 할 수 있습니다.

sudo apt-mark hold python python-pip

이것을 원하지 않는 이유는 다른 답변을 참조하십시오. 우분투 18.04 이상은 더 이상 Python 2와 함께 제공되지 않으므로 너무 나쁘지 않아야합니다.


2
에 관한 없다 "우분투 18.04가 더 이상 파이썬 2와 함께 제공됩니다, 그래서 너무 나쁘지 않을 것이다." 우분투 (기본적으로 Python 2가 설치되어 있지 않은 버전조차도)에서 실행 파일 python은 Python 2로 가정되므로 일부 문제가 발생할 수 있습니다.
wjandrea

* python->/usr/bin/python
wjandrea

0
cat > /usr/local/bin/py
#!/bin/dash
python3 "$@"
<CTRL-D>

(/ usr / local / bin에 대한 쓰기 권한이있는 경우)

cat > /usr/local/bin/pyi
#!/bin/dash
python3 -i "$@"
<CTRL-D>

그런 다음 선택한 파이썬에 대해 py를 입력하고 #을 입력하십시오!


심볼릭 링크를 사용하는 것이 더 간단하지 않습니까? sudo ln -s /usr/bin/python3 /usr/local/bin/py
wjandrea

0

/ usr / bin / python과 / usr / bin / pip를 제거하는 것이 매우 도움이됩니다. 이렇게하면 모든 프로그램이 "python2"및 "python3"명령에 의존하게됩니다.

선택적이고 오래된 패키지 #!/usr/bin/python가 작동 하는 데 의존 하기는하지만, 이상하고 때로는 디버그하기 어려운 실수를 계속하는 것보다 패치를 해당 프로그램에 제출하는 것이 좋습니다.


-1

update-alternatives호환성 문제로 인해 다른 시간에 필요할 수있는 다른 버전의 프로그램을 제공 하는 데 사용할 수 있습니다 .

이 답변 은 다른 버전의 gcc / g ++를 동시에 유지하기 위해 설정하는 방법에 대한 좋은 예입니다.

python2.7 및 python 3.3과 동일하게 수행하십시오.


2
초보 사용자는 다른 상황에 맞게 연결된 답변을 쉽게 적용하지 못할 수 있습니다. 이전 답변을 인정하는 것 외에도 Python에 필요한 단계를 배치하는 것이 좋습니다.
chaskes

여기에 단계별 솔루션 linuxconfig.org/…가 있습니다.
woto

파이썬 2와 3은 대안이 아닙니다. 심지어 다른 마이너 버전도 그렇지 않습니다 ( 예 :) . 이 방법은 쉽게 깨질 수 있습니다.
wjandrea

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