Homebrew: Python 3.7'den Python 3.6.5.x'e geri alma?


72

Bir brew upgradePython 3.7 benim sistemini Python yükseltti. Ne yazık ki, Python 3.7, kullanmam gereken diğer yazılımları kırar (Ansible dahil ancak bunlarla sınırlı değildir). Bu sorunların önümüzdeki hafta içinde çözüleceğini tahmin ediyorum, ancak bu arada Python 3.6.5.x’e geri dönmek istiyorum

A brew info python, önceki sürümlerin hala kurulu olduğunu ve tasfiye edilmediğini gösteriyor:

 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

Çeşitli brew linkve brew installdiğer siteler tarafından önerilmektedir komutlar işe görünmüyor:

 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 yüklü olmayanlar için, demlemek yoluyla elde etmenin bir yolu var: stackoverflow.com/a/51125014/760905
MartyMacGyver

Bir python sürümü 3.7.1 var. belki bu senin problemlerini çözer.
JMH

Yanıtlar:


82

Halen önceki sürümleri hala kullanıyorsanız, sadece

brew switch python 3.6.5_1

1
Bana birkaç ay ver, 3.7'ye geçmeye hazır olacağım. O gün geldiğinde, bu brew switch ...emri 3.7'ye geri almak için nasıl geri alabilirim?
Peter Bengtsson

Bunun Python 3.6.5'e bağlı sanal bir ortam yaratması arasında ne fark var?
jmh

Nedense 3.6.5 sanal ortamlarım 3.7'ye yükseltmek için Homebrew kullandığımda bozuldu ve nedenini tam olarak anlamadım. Tabii ilk başta sanal ortamlar yaratmamın sebeplerinden biri de bu sorundan kaçınmaktı. Geri geçiş onu düzeltti. 3.7'deki hiçbir şey benim için kritik olmadığından, şimdilik sadece 3.6.5'e bağlı kalıyorum.
knilsilooc

2
Yukarıdakilerin sebebinin, Python'un yerleşik venvesinin Python 3.6.x'ten 3.7.x'e giderken kırılan sembolik çizgiler yaratması olduğunu anladım. Venv'ler python3 -m venv --copies venvoluşturmak, Python sürümünüzü yükseltirken kırılmalarını engelleyen, sembolik bağlantılar oluşturmak yerine Python dosyalarını kopyalar.
knilsilooc

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

51

Geçecek önceki bir sürüme sahip değilseniz, önceki formülden bu şekilde yükleyebilirsiniz:

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

2019-10 Güncellemesi

- ana bağımlılıklar bildirimi

Hatayı --ignore-dependenciesaşmak için bayrak kullanıyorsanız recursive dependency, pip3 installböyle bir kurulumdan sonra size aşağıdaki hatayı verebilir :

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

Çözüm, önce bağımlılıklarını kurmak olabilir (hariç her şey sphinx-doc)

$ brew install pkg-config gdbm openssl readline sqlite xz

Homebrew python'da son bağımlılık olan İhtiyacı olan opensslve DEĞİLDİR dikkat edin openssl@1.13.7.4_1


1
Ne yaptığını da açıklarsan, faydalı olacağını düşünüyorum brew unlink python.
nbro,

Ayrıca, bunun görünüşte mevcut Python 3.7 sürümünüzü kaldırmayacağını ve daha sonra geri dönebileceğinizi vurgulamalısınız (örneğin, https://apple.stackexchange.com/a/329192/90775 tavsiye edilenleri kullanarak ).
nbro,

9
Eğer bir özyinelemeli bağımlılığı hakkında bir sorunu olsun, bu bağımlılıkları göz ardı ederek atlanabilir: brew install --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb.
Eric Wiener

Eğer --ignore-dependenciesSfenks nedeniyle çalışmaz, sfenks olarak bağımlılık açıklama ve burada anlatıldığı gibi sfenks yeniden yükleyin: 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

İki seçenek

Daha önce kurulmuş bir Python sürümünü kurtarmak için:

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

brew info pythonDaha önce ne yüklediğinizi görmek için kullanın .

Temiz bir Python 3.6.5 kurulumu yapmak için:

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

Uzun cevap

Homebrew ile Python'u kurmak için iki formül vardır: python@2ve python.
Birincisi Python 2 için, ikincisi Python 3 için.

Not: Web'de python3Python sürüm 3'ü yüklemek için kullanılan formül adı olarak anılan eski cevapları bulabilirsiniz . Şimdi sadece python!

Varsayılan olarak, bu formüllerle ilgili Python ana sürümünün en son sürümünü yükleyebilirsiniz. Yani doğrudan 3.6 gibi küçük bir sürümü kuramazsınız.

Çözüm:

İle brewformülün adresini kullanarak bir paket yükleyebilirsiniz, örneğin bir git havuzunda.

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

Veya özellikle Python 3 için

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

Belirtmeniz gereken adres, istenen sürüm için formülün (python.rb) en son taahhüdünün adresidir. Commint tanımlayıcısını homebrew-core / Formula / python.rb geçmişine bakarak bulabilirsiniz.

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

Python> 3.6.5

Yukarıdaki bağlantıda, 3.6.5'in üzerindeki bir Python sürümü için bir formül bulamazsınız. Python 3.7'yi (resmi) deponun sahiplerinin yayınladıktan sonra, yalnızca Python 3.7'nin tarifine güncelleme yaparlar.

Yukarıda açıklandığı gibi, homebrew ile yalnızca Python 2 (python @ 2) ve Python 3 (python) 'a sahip olursunuz, Python 3.6 için açık bir formül yoktur .

Bu küçük güncellemeler çoğu durumda ve çoğu kullanıcı için çoğunlukla önemsiz olmakla birlikte, birinin 3.6 için açık bir formül yapmış olup olmadığını arayacağım.




2

Geçici olarak geri dönebilir homebrew-coreve HOMEBREW_NO_AUTO_UPDATEdeğişkeni yerinde tutması için ayarlayabilirsiniz :

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

Güvenlik düzeltme eklerini kaçıracağınız için kalıcı olarak homebrew çekirdeğini geri yüklemenizi önermiyorum, ancak test amacıyla kullanışlıdır.

Ayrıca, homebrew formüllerinin eski sürümlerini aşağıdaki brew extractkomutu kullanarak kendi musluğunuza (tap_owner / tap_name) çıkarabilirsiniz :

brew extract python tap_owner/tap_name --version=3.6.5

Kendi musluğunuzu yapmak veya 3.6 ile diğer serileri güncelleyerek bakımını otomatikleştirmek için birini bulmak kesinlikle en iyi yoldur. Düzgün yaparlarsa, tam bir sürüme sahip olabilir ve ona bağlayabilirsiniz brew link python@3.6.x. Yine pyenvde başka bir seçenek olsa .
dragon788

-1

Bu konuda uzman değilim ama aynı sorunu yaşadım. Bu benim için çalıştı. $ 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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.