Linux에서 두 가지 버전의 Python. 2.7을 기본값으로 만드는 방법


124

내 linuxbox에 두 가지 버전의 Python이 있습니다.

$python
Python 2.6.6 (r266:84292, Jul 10 2013, 22:48:45) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 


$ /usr/local/bin/python2.7
Python 2.7.3 (default, Oct  8 2013, 15:53:09) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

$ which python
/usr/bin/python
$ ls -al /usr/bin/python
-rwxr-xr-x. 2 root root 4864 Jul 10 22:49 /usr/bin/python

2.7을 기본 버전으로 만들려면 어떻게하면 2.7에 입력 python할 수 있습니까?


1
내가 페도라에 이것을했을 때 yum 또는 apt-get이 더 이상 작동하지 않았습니다.
— User

@User : 예, 고대 Mandrake를 비슷하게 깨뜨 렸습니다 ( /usr/bin/env python2.3 대신 2.6을 의미하는 것은 명령의 절반을 의미 rpm하고 모두 urpmi작동 을 중지 함을 의미 함 ).
— abarnert

다음 단계에 따라 Centos 5 : 1st에 Django를 설치하고 소스 코드에서 Python 3.6을 설치했습니다. 2nd : 쉘에서 다음 명령을 입력하십시오. "alias python = / usr / local / bin / python3.6"3rd : 다음 명령을 실행하여 Django를 설치하십시오. "pip3 install Django"4 번째 : "python -m django --version"을 확인하십시오. "1.10.5"버전으로 설치된 Django
— showmyroutes

나를 /usr/bin/python가리키는 소프트 링크였습니다 python2. 나는 그것을 변경했습니다python3.6
— munish

답변:


173

실제로 기본 Python을 변경하고 싶지는 않을 것입니다.

배포판이에서 표준 시스템 Python을 설치했으며 /usr/bin,이 존재하고 #! /usr/bin/env python. 당신은 할 수 있습니다 일반적으로 2.7 파이썬 2.6 스크립트를 실행하는 도망,하지만 당신은 위험을 감수 하시겠습니까?

게다가, 원숭이를 사용 /usr/bin하면 패키지 관리자의 패키지 관리 기능이 손상 될 수 있습니다. 그리고 디렉토리의 순서를 바꾸면 PATH파이썬 외에도 많은 영향을받습니다. (사실, /usr/local/bin앞서있는 것이 더 일반적 /usr/bin이며 실제로 원하는 것일 수 있습니다. 그러나 다른 방법으로 가지고 있다면 아마도 그럴만 한 이유가있을 것입니다.)

그러나 .NET을 입력 할 때 시스템이 2.7을 실행하도록하기 위해 기본 Python을 변경할 필요 는 없습니다 python.


먼저 셸 별칭을 설정할 수 있습니다.

alias python=/usr/local/bin/python2.7

프롬프트에 입력하거나 ~/.bashrc변경 사항을 지속 하려면 입력 python하십시오. 이제 입력 하면 선택한 2.7이 실행되지만 시스템의 일부 프로그램이 스크립트를 실행하려고 할 /usr/bin/env python때 표준 2.6을 실행합니다.


또는 2.7 (또는 다른 프로젝트에 대해 별도의 venv)에서 가상 환경을 만들고 venv 내에서 작업을 수행하십시오.


1
:( 맞아요. 안타깝게도 @rohit의 답변에 따라 이미 새 symb 링크를 만들었습니다. 이제 내 yum명령이 작동하지 않습니다! sym 링크를 다시 만들려고했지만 sudo ln -sf /usr/bin/python2.6 /usr/bin/python해결 방법이 없습니까?
— Anthony

@Anthony : 제 생각에는 /usr/bin/python이전에는 실제로 심볼릭 링크가 아니었고 래퍼 스크립트 나 실행 파일이었는데 이제 덮어 써서 되돌릴 수 없습니다. rpm가 여전히 작동하는 경우 Python 패키지를 수동으로 다운로드하고 yum.
— abarnert

입력 할 때 여전히 2.6 인터프리터를 사용할 python2.6수 있으므로 여전히 거기에 있습니다.
— 안토니

7
@Anthony : 그리고 앞으로 누군가가 / usr / bin (또는 / usr / local 외에 / usr의 모든 위치)에있는 항목을 변경하라고하면 거기에있는 내용을 기록하고 백업을…
— abarnert

내가 내 자신이 얼마나 나쁜 엉망! 해당 스크립트가있을 수있는 다른 centos 상자가 있습니다. 거기에서 복사하여이 상자의 / usr / bin에 넣으면. 작동 할 것 같나요?
— Anthony

19

추가 /usr/local/bin귀하에게 PATH이전의 목록에서 환경 변수 /usr/bin.

일반적으로 이것은 쉘의 rc 파일에서 수행됩니다. 예를 들어 bash의 경우 다음과 같이 입력합니다 .bashrc.

export PATH="/usr/local/bin:$PATH"

이것은 쉘이 pythonin /usr/local/bin과 함께 가기 전에 먼저 in 을 찾습니다 /usr/bin.

(물론, 이것은 당신이 또한 /usr/local/bin/pythonpoint to가 필요하다는 것을 의미합니다 python2.7-만약 그것이 아직 없다면, 당신은 그것을 symlink해야 할 것입니다.)


PYTHONHOME을 적절하게 설정하거나 무언가에 의해 설정되어 있으면 설정을 해제해야 할 수도 있습니다.
— Marcin 2013 년

1
이것은 / usr / bin 자체를 변경하는 것을 제안하는 솔루션만큼 위험하지는 않지만 여전히 OP가 실제로 원하는 것은 아니라고 생각합니다.
— abarnert

이것은 Ubuntu 14.x에서 16.x로 업그레이드 한 후 도움이되었습니다
— learn2day

4

명령을 입력하십시오

which python

//output:
/usr/bin/python

cd /usr/bin
ls -l

여기에서 이와 같은 것을 볼 수 있습니다.

lrwxrwxrwx 1 root   root            9 Mar  7 17:04  python -> python2.7

기본 python2.7은 텍스트 'python'에 소프트 링크됩니다.

따라서 소프트 링크 파이썬을 제거하십시오.

sudo rm -r python

그런 다음 위의 명령을 다시 시도하십시오.

ls -l

소프트 링크가 제거 된 것을 볼 수 있습니다.

-rwxr-xr-x 1 root   root      3670448 Nov 12 20:01  python2.7

그런 다음 python3.6 용 새 소프트 링크를 만듭니다.

ln -s /usr/bin/python3.6 파이썬

그런 다음 python터미널 에서 명령 을 시도하십시오.

//output:
Python 3.6.7 (default, Oct 22 2018, 11:32:17) 
[GCC 8.2.0] on linux

입력 help, copyright, credits또는 license더 많은 정보를 얻을 수 있습니다.


1
귀하의 게시물은 OP의 질문에 대한 답변이 아닙니다.
— Frank

이것은 저에게 매우 이상한 문제를 해결했습니다. 루트 또는 일반 터미널에서 파이썬 버전을 확인하면 3.6.8이 표시되었지만 .sh를 만들고 내부에 python -version을 입력하면 2.7이 인쇄되었습니다. 위에서 언급 한 것처럼 소프트 링크가 존재했기 때문입니다. 단계를 따르고 수정되었습니다. 감사.
— S4nd33p

감사합니다! 이것은 "필요한 파이썬 3 이상"의 문제를 해결했습니다
— Tamim Attafi

4

다음을 통해 현재 Python 버전을 확인합니다.

$ python --version

그런 다음 파이썬이 어떤 파일에 대한 심볼릭 링크인지 확인하십시오.

  $ ll /usr/bin/python

출력 예 :

 lrwxrwxrwx 1 root root 9 Jun 16  2014 /usr/bin/python -> python2.7*

사용 가능한 다른 Python 버전을 확인하십시오.

$ ls /usr/bin/python*

출력 예 :

/usr/bin/python     /usr/bin/python2.7-config  /usr/bin/python3.4         /usr/bin/python3.4m-config  /usr/bin/python3.6m         /usr/bin/python3m
/usr/bin/python2    /usr/bin/python2-config    /usr/bin/python3.4-config  /usr/bin/python3.6          /usr/bin/python3.6m-config  /usr/bin/python3m-config
/usr/bin/python2.7  /usr/bin/python3           /usr/bin/python3.4m        /usr/bin/python3.6-config   /usr/bin/python3-config     /usr/bin/python-config

현재 버전의 파이썬을 3.6 버전으로 변경하려면 ~ / .bashrc 파일을 편집하십시오.

vim ~/.bashrc

파일 끝에 아래 줄을 추가하고 저장하십시오.

alias python=/usr/local/bin/python3.6

Python 3.6 용 pip를 설치하려면

$ sudo apt-get install python3.6 python3.6-dev
$ sudo curl https://bootstrap.pypa.io/ez_setup.py -o - | sudo python3.6
$ sudo easy_install pip

성공하면 현재 버전의 pip를 확인하십시오.

$ pip3 -V

출력 예 :

pip 1.5.4 from /usr/lib/python3/dist-packages (python 3.6)

2

모든 OS는 기본 버전의 python과 함께 제공되며 / usr / bin에 있습니다. OS와 함께 제공되는 모든 스크립트 (예 : yum)는 / usr / bin에있는이 버전의 Python을 가리 킵니다. 새 버전의 python을 설치할 때 새 버전의 python에서 작동하지 않을 수있는 기존 스크립트를 깨뜨리고 싶지 않습니다.

이를 수행하는 올바른 방법은 Python을 대체 버전으로 설치하는 것입니다.

e.g.
wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2 
tar xf Python-2.7.3.tar.bz2
cd Python-2.7.3
./configure --prefix=/usr/local/
make && make altinstall

이제 이렇게하면 yum과 같은 기존 스크립트가 / usr / bin / python에서 계속 작동합니다. 기본 파이썬 버전은 / usr / local / bin에 설치된 버전입니다. 즉, 파이썬을 입력하면 2.7.3을 얻게됩니다.

이것은 발생합니다. $ PATH 변수에는 usr / bin 앞에 / usr / local / bin이 있습니다.

/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

python2.7이 여전히 기본 Python 버전으로 적용되지 않으면 수행해야합니다.

export PATH="/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"

-8

2.7 버전을 수동으로 설치했지만 2.6은 패키지에서 가져온 것 같습니다.

간단한 대답은 : python 패키지를 제거하는 것입니다.

더 복잡한 것은 다음과 같습니다. / usr / local에 수동으로 설치하지 마십시오. 2.7 버전으로 패키지를 빌드 한 다음 업그레이드하십시오.

패키지 처리는 사용하는 배포에 따라 다릅니다.


5
Python 패키지는 배포판에서 거의 확실하게 필요합니다. CentOS는 RPM 기반이며 RPM 및 YUM 도구의 절반은 Python으로 작성됩니다.
— abarnert

친애하는 Michael, 수동으로 설치된 python2.7을 제거하는 옵션을 알려주십시오!
— AVA

간단한 해결책은 / usr / local / 아래에있는 모든 것을 제거하는 것이지만 이렇게하면 수동으로 컴파일하고 설치 한 모든 것을 제거 할 수 있습니다. 어떤 파일이 / usr / local의 어떤 소프트웨어에 속하는지 추적하는 좋은 방법이 없으므로 일반적으로 설치하는 것은 권장되지 않습니다. 아마도 거기에는 파이썬 만있을 것입니다. / usr / local / bin에 python 실행 파일 만 포함 된 경우 제거해도 다른 항목이 손상되지 않을 가능성이 높습니다.
— emesik

2
파이썬을 제거해서는 안됩니다. 나 한테서 가져가. 나는 그것을했고 그것은 내 시스템을 망가 뜨렸다. 많은 앱이 이에 의존합니다. 이것은 매우 부당한 조언입니다.
— Patrick Mutwiri 2018
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.