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.