Homebrew : Python 3.7에서 Python 3.6.5.x로 롤백?


72

A는 brew upgrade파이썬 3.7에 내 시스템 파이썬을 업그레이드했습니다. 불행히도, 파이썬 3.7은 내가 사용해야하는 다른 소프트웨어 (Ansible을 포함하되 이에 국한되지 않음)를 손상시킵니다. 이 문제가 다음 주 정도에 해결 될 것이라고 생각하지만 그 동안 Python 3.6.5.x로 롤백하고 싶습니다.

A brew info python는 이전 버전이 여전히 설치되어 있고 제거되지 않았 음을 나타냅니다.

 brew info python
python: stable 3.7.0 (bottled), HEAD
Interpreted, interactive, object-oriented programming language
https://www.python.org/
/usr/local/Cellar/python/3.6.5 (4,825 files, 100.8MB)
  Poured from bottle on 2018-03-31 at 20:21:57
/usr/local/Cellar/python/3.6.5_1 (4,788 files, 99.9MB)
  Poured from bottle on 2018-06-20 at 16:00:26
/usr/local/Cellar/python/3.7.0 (4,869 files, 103.3MB)
  Poured from bottle on 2018-07-01 at 19:30:37
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/python.rb

다양한 brew linkbrew install다른 사이트에 의해 제안 명령이 작동하지 않는 것 :

 brew link python@3.6.5
Error: No such keg: /usr/local/Cellar/python@3.6.5
 brew link python@3.6.5_1
Error: No such keg: /usr/local/Cellar/python@3.6.5_1
 brew install python@3.6.5
Error: No available formula with the name "python@3.6.5" 
==> Searching for a previously deleted formula (in the last month)...
Error: No previously deleted formula found.
==> Searching for similarly named formulae...
==> Searching local taps...
Error: No similarly named formulae found.
==> Searching taps...
==> Searching taps on GitHub...
Error: No formulae found in taps.

10
3.6.5_1을 설치하지 않은 사람들을 위해, brew를 통해 그것을 얻을 수있는 방법이 있습니다 : stackoverflow.com/a/51125014/760905
MartyMacGyver

파이썬 버전 3.7.1이 있습니다. 아마도 그것은 당신의 문제를 해결합니다.
jmh

답변:


82

이전 버전을 계속 사용할 수 있다면

brew switch python 3.6.5_1

1
3.7 개월로 전환 할 준비가 될 것입니다. 그 날이 오면이 brew switch ...명령을 실행 취소 하여 3.7로 돌아가려면 어떻게해야 합니까?
Peter Bengtsson

이것은 파이썬 3.6.5에 연결된 가상 환경을 만드는 것과 어떻게 다릅니 까?
jmh

@jmh 어떤 이유로 Homebrew를 사용하여 3.7로 업데이트했을 때 3.6.5 가상 환경이 깨졌으며 그 이유를 알지 못했습니다. 물론 처음에 가상 환경을 만든 이유 중 하나는 해당 문제를 피하는 것이 었습니다. 다시 전환하면 문제가 해결되었습니다. 3.7의 어떤 것도 나에게 중요하지 않기 때문에, 나는 지금 3.6.5를 고수하고 있습니다.
knilsilooc

2
위의 이유는 Python의 내장 venv가 심볼릭 링크를 생성하여 Python 3.6.x에서 3.7.x로 갈 때 끊어지기 때문이라는 것을 깨달았습니다. python3 -m venv --copies venv심볼릭 링크를 작성하는 대신 Python 파일 을 복사하여 venvs를 작성 하면 Python 버전을 업그레이드 할 때 중단되지 않습니다.
knilsilooc

8
Error: python does not have a version "3.6.5_1" in the Cellar. python installed versions: 3.7.0
mrgloom

51

전환 할 이전 버전이없는 경우 다음 방법으로 이전 공식에서 설치할 수 있습니다.

$ brew unlink python
$ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb

2019-10 업데이트

-무시 의존성 통지

--ignore-dependencies플래그를 사용하여 recursive dependency오류 를 극복하는 경우, pip3 install설치 후 수행 할 때 다음 오류가 발생할 수 있습니다 .

pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.

해결 방법은 종속성을 먼저 설치하는 것입니다 (을 제외한 모든 것 sphinx-doc)

$ brew install pkg-config gdbm openssl readline sqlite xz

가 필요한 것을 알 opensslNOT openssl@1.1 3.7.4_1 사제 파이썬의 최신 의존성이다


1
나는 당신이 무엇을하는지 설명한다면 유용 할 것이라고 생각합니다 brew unlink python.
nbro

또한, 이것이 현재 Python 3.7 버전을 제거하지는 않으며 나중에 https://apple.stackexchange.com/a/329192/90775와 같이 제안 된 버전을 사용하여 다시 전환 할 수 있음을 강조해야합니다 .
nbro

9
재귀 종속성에 대한 문제가 발생하면 종속성을 무시하여이를 무시할 수 있습니다 brew install --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb.
에릭 위너

경우 --ignore-dependencies스핑크스로 인해 작동하지 않습니다 스핑크스의 의존성을 주석 여기에 설명 된대로 스핑크스를 다시 설치 pyimagesearch.com/2019/01/30/...을
thadk

Error: python contains a recursive dependency on itself: python depends on sphinx-doc sphinx-doc depends on python
punkrockpolly

11

두 가지 옵션

이전에 설치된 Python 버전을 복구하려면

brew switch python 3.x.x_x # Ex. 3.6.5_1

brew info python이전에 설치 한 것을 확인하는 데 사용

Python 3.6.5를 새로 설치하려면 다음을 사용하십시오.

brew unlink python # If you have installed (with brew) another version of python
brew install --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb

긴 답변

Homebrew로 Python을 설치하는 데에는 두 가지 공식이 있습니다 : python@2python.
첫 번째는 Python 2이고 두 번째는 Python 3입니다.

참고 : 웹에서 python3Python 버전 3을 설치하기위한 수식 이름으로 언급 된 오래된 답변을 찾을 수 있습니다 python.

기본적으로 이러한 공식을 사용하면 해당하는 주요 버전의 Python 최신 버전을 설치할 수 있습니다. 따라서 3.6과 같은 부 버전을 직접 설치할 수 없습니다.

해결책:

를 사용 brew하면 공식 주소를 사용하여 패키지를 설치할 수 있습니다 (예 : git 저장소).

brew install https://the/address/to/the/formula/FORMULA_NAME.rb

또는 특히 Python 3

brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/COMMIT_IDENTIFIER/Formula/python.rb

지정해야하는 주소는 원하는 버전에 대한 공식 (python.rb)의 마지막 커밋에 대한 주소입니다. homebrew-core / Formula / python.rb의 히스토리를 보면 커 민트 식별자를 찾을 수 있습니다.

https://github.com/Homebrew/homebrew-core/commits/master/Formula/python.rb

파이썬> 3.6.5

위의 링크에는 3.6.5 이상의 Python 버전에 대한 공식이 없습니다. (공식) 저장소의 관리자가 Python 3.7을 출시 한 후에는 Python 3.7의 레시피에 대한 업데이트 만 제출합니다.

위에서 설명한 것처럼 homebrew에는 Python 2 (python @ 2)와 Python 3 (python) 만 있으며 Python 3.6에 대한 명시적인 공식은 없습니다 .

이러한 사소한 업데이트는 대부분의 경우와 대부분의 사용자와 관련이 없지만 대부분 3.6에 대한 명시 적 수식을 작성했는지 검색합니다.


1
github.com/sashkab/homebrew-python 이 그렇게하는 것 같습니다
Grasshopper


2

변수를 일시적으로 취소 homebrew-core하고 HOMEBREW_NO_AUTO_UPDATE변수를 유지하도록 설정할 수 있습니다 .

cd `brew --repo homebrew/core`
git checkout f2a764ef944b1080be64bd88dca9a1d80130c558
export HOMEBREW_NO_AUTO_UPDATE=1
brew install python
brew install vim --with-python

보안 패치를 놓칠 수 있으므로 homebrew-core를 영구적으로 백 데이트하는 것은 좋지 않지만 테스트 목적으로 유용합니다.

다음 brew extract명령을 사용하여 이전 버전의 홈 브루 수식을 자신의 탭 (tap_owner / tap_name)으로 추출 할 수도 있습니다 .

brew extract python tap_owner/tap_name --version=3.6.5

자신의 탭을 만들거나 업데이트로 3.6 및 기타 시리즈를 자동으로 유지 관리하는 사람을 찾는 것이 가장 좋은 방법입니다. 제대로 작동하면 정규화 된 버전을 사용하여에 연결할 수 있습니다 brew link python@3.6.x. pyenv다른 옵션도 있지만 .
dragon788

-1

나는 이것에 대한 전문가는 아니지만 같은 문제가있었습니다. 이것이 나를 위해 일한 것입니다. $ brew unlink python $ brew uninstall --ignore-dependencies python3 $ brew uninstall pipenv then from https://www.python.org/downloads/ installed python 3.6.6 $ brew install pipenv

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