"python3 설치가 손상되었습니다"


13

Ubuntu 16.04.5 LTS에서 18.04로 업그레이드하고 싶었습니다 sudo do-release-upgrade. 다운로드 및 추출 후 다음을 bionic.tar.gz얻습니다.

Can not upgrade 

Your python3 install is corrupted. Please fix the '/usr/bin/python3'
symlink.

나는 보았다 "파이썬 설치가 손상되었습니다"해결 방법? 그래서 sudo ln -sf /usr/bin/python3.6 /usr/bin/python3비슷한 문제가 될 것이라고 생각했습니다. 그러나 그것은 작동하지 않았습니다 (여전히 같은 오류 메시지).

몇 가지 파이썬 버전이 있습니다.

$ ls /usr/lib | grep python
python2.7
python3
python3.5
python3.6

$ update-alternatives --display python3
python3 - auto mode
  link best version is /usr/bin/python3.6
  link currently points to /usr/bin/python3.6
  link python3 is /usr/bin/python3
/usr/bin/python3.5 - priority 1
/usr/bin/python3.6 - priority 2

어떻게 수정 python3합니까?


1
그리고 재설치 (허용 된 답변에서 언급 한 바와 같이)는 어떻습니까?
Kulfy

답변:


16

16.04의 기본 Python 3 버전을 사용해야합니다. 그건 3.5 이 아닌 3.6. 그래서 실행하십시오 :

sudo ln -sf /usr/bin/python3.5 /usr/bin/python3

그래도 문제가 해결되지 않으면 python3패키지를 다시 설치하십시오 .

sudo apt-get install --reinstall python3

그건 그렇고, update-alternatives --display python3당신에게 줘야합니다 update-alternatives: error: no alternatives for python3. 우분투에서는 다른 버전의 파이썬이 대안이 아닙니다.


32

방금 Pop! _OS 18.04 에서이 문제가 발생하여 18.10으로 업그레이드하려고했는데 문제가에 대한 심볼릭 링크가 /usr/bin/python아닌 심볼릭 링크에 있음이 밝혀졌습니다 /usr/bin/python3. 나는 (not ) /usr/bin/python3.6의 대안으로 구성했으며, 이것을 변경했을 때 예상대로 실행할 수 있습니다 .pythonpython3do-release-upgrade

나는 오류 메시지가 지적하고자 python하지 python3.


문제가 발생하기 전에 :

$ update-alternatives --display python
python - manual mode
  link best version is /usr/bin/python3.6
  link currently points to /usr/bin/python2.7
  link python is /usr/bin/python
/usr/bin/python2.7 - priority 1
/usr/bin/python3.6 - priority 2 

나는 이것을 이렇게 고쳤다.

$ sudo update-alternatives --remove-all python
$ sudo ln -sf /usr/bin/python2.7 /usr/bin/python

또한 진행 상황과 해결 방법을 더 잘 설명하는보다 정확한 솔루션을 설명하는 아래 주석을 참조하십시오 .


1
예, 해결책이 작동 함을 확인할 수 있습니다.이 답변은 받아 들여야합니다.
자인

이뿐만 아니라 나를 위해 일한
EFI Kaltirimidou에게

3
에 대한 수신 거부하는 것은 update-alternatives --remove-all python확실히 불필요한 과잉이었다 : 당신이 할 필요가 모든 사용 된 update-alternatives --config python가지고 python최근에 점 python2.*(예를 python2.7다음 사용) update-alternatives --config python3하도록 python3에 지점을 구체적으로 python3.6 - 18.04의 기본 파이썬 3 버전이다.
KiriSakow

2
우분투 18.04에 파이썬 3.7로 업그레이드해야하는 경우가 전체 시스템하지 않는다 - 또는 불쾌한 작은 문제가 가지고 결국되어있어 시스템 전체 필수적인 도구를 좋아하여 gnome-terminal, update-manager등 오히려 가상 환경 (문서 사용 여기여기를 )
KiriSakow

@Kiri 시스템을 교체하지 않고 다른 버전의 Python을 설치하는 방법이 있습니다. 예를 들어 deadsnakes PPA 사용 .
wjandrea

5

16.04 LTS 에서 18.04 LTS 로 업그레이드하려고 할 때 WSL Ubuntu를 실행 하는 Windows 10 1903 에서이 오류 메시지 가 나타 났습니다 .

do-release-upgrade실패한 후 , 나는 python모든 대안을 대안으로 바꾸고 update-alternatives --config python업그레이드 명령을 다시 실행했다. 도움이되지 못했습니다.

그런 다음 /var/log/dist-upgrade/main.log줄이 포함 된 로그 파일 을 확인했습니다.

2019-09-02 20:58:08,686 DEBUG _pythonSymlinkCheck run
2019-09-02 20:58:08,687 DEBUG python symlink points to: '/etc/alternatives/python', but expected is 'python2.7' or
'/usr/bin/python2.7'
2019-09-02 20:58:08,688 ERROR pythonSymlinkCheck() failed, aborting

따라서 오류 메시지에 python3이 언급되어 있지만 문제는 python2 입니다.

업그레이드 스크립트는에 대한 /usr/bin/python링크를 /usr/bin/python2확인합니다. 소스 코드 참조 DistUpgrade/DistUpgradeController.py: 우분투 런치 패드

따라서 가장 인기있는 답변에 설명 된 것처럼 대안 시스템에서 파이썬을 완전히 제거하고 링크를 수동으로 추가하는 것이 하나의 해결책입니다.

대체 시스템에서 파이썬을 제거하지 않으려면 업그레이드 프로세스 중 시간 동안 만 링크를 변경하십시오.

# rm /usr/bin/python 
# ln -sf /usr/bin/python2.7 /usr/bin/python
# do-release-upgrade

이것은 나를 위해 일했습니다.

업그레이드 프로세스 중에 링크가 자동으로 복구됩니다. 따라서 업그레이드가 완료되면 alternatives 디렉토리의 python 항목을 가리 킵니다.

$ ls -l /usr/bin/python
lrwxrwxrwx 1 root root 24 Sep  2 22:01 /usr/bin/python -> /etc/alternatives/python

편집 : 철저한 정보를 위해 18.04 LTS에서 19.04로 업그레이드하고 응답자 가이 상황에도 적용되는 경우에도 문제가 나타날 수 있습니다.


1
참고 :이 답변은 Ubuntu 18.04 LTS에서 19.04 로의 업그레이드에도 적용됩니다. 18.04 로의 업데이트가 성공적으로 완료된 후 직접 시도했습니다.
Daniel K.

3

기본적 으로이 문제에 대한 솔루션은 /usr/bin/python우분투 릴리스가 기대하는 올바른 버전의 Python 을 가리 키는 것으로 구성됩니다 (예 : 16.04에서는 Python2.7이고 18.04에서는 Python3.6입니다).

시스템에 여러 버전의 Python이 설치되어 있으면이 update-alternatives를 관리하는 데 사용할 수 있습니다. 파이썬의 기본 대안은 시스템이 기대하는 올바른 버전 (Ubuntu 18.04의 3.6)이면 문제가되지 않습니다.

이없는 작업을 수행하는 이유는, 사용하고 update-alternatives, /usr/bin/python3포인트 /etc/alternatives/python3, 그리고는 정확히 만들기와 동일하지 것 같다 /usr/bin/python3에 지점을 /usr/bin/python3.6.

그렇기 때문에이 문제에 대한 해결책은 종종 Python3 버전 관리를 중단하고 시스템이 기대하는 올바른 버전의 Python3 update-alternatives/usr/bin/python3가리 키도록 구성되는 이유입니다.


/usr/bin/python새로 설치 한 18.04에는 존재하지 않지만 새로 설치 대신 업그레이드를 수행하거나 python패키지를 설치 하는 경우에는 3.6이 아닌 Python 2.7이어야합니다. PEP 394를 참조하십시오 .
wjandrea

분명히, 다른 버전의 Python은 Ubuntu의 대안이 아니며로 관리해서는 안됩니다 update-alternatives. OS가 설치중인 특정 버전에 의존하기 때문입니다.
wjandrea
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.