Demleme yüklü Python'u varsayılan Python olarak nasıl kullanabilirim?


188

Mac OS X 10.6.2'de Homebrew'a (fink ve macport kullandıktan sonra) geçmeye çalışıyorum. Python 2.7'yi

brew install python 

Sorun şu ki, Macport'un aksine, python_select yardımcı programı yok ve varsayılan mac python'um her zaman varsayılan

which python

ver bana

/usr/bin/python

ve /usr/bin/pythonbir sembolik bağlantı değildir

Python demleme lezzetini varsayılan pythonum yapmak için nasıl yapabilirim?


14
Homebew artık python'un sistem kurulumunu gölgelemez. Şunu yapabilirsiniz: export PATH="/usr/local/opt/python/libexec/bin:$PATH"kaynak: discourse.brew.sh/t/…
George

3
Bahsedilen tüm cevapları denedim, / usr / local / bin / $ PATH'imde / usr / bin'den önce geliyor. Demlemek bağlantısını denedim ve bağlantıyı kaldırdım, demlemek doktor / usr / bin / usr / local / bin'den önce bir sorun bildirmedi. Yine de hangi python yaptığımda, demlemek ile yüklü değil / usr / bin / python alıyorum.
Ujwal Ratra

deneyin ... hangi python2
Fraser

Yanıtlar:


117

Homebrew'u kullanırken aşağıdaki komut daha iyi bir resim verir:

brew doctor

Çıktı:

==> / usr / bin / usr / local / bin'den önce gerçekleşir Bu, Homebrew tarafından sağlananlar yerine sistem tarafından sağlanan programların kullanılacağı anlamına gelir. Örneğin, bu bir sorundur. demlemek Python yüklü.

.Bash_profile dosyanızı $ PATH'nıza / usr / bin önüne / usr / bin önüne koymak için düzenleyin.


4
Yolunuzda / user / local / bin TWICE olmadığından emin olun. PATH'mda bir nedenden ötürü, hem / usr / bin'den önce ve sonra ortaya çıktı ve beni deli ediyordu.
vinaut

1
birçok program, başlıkta / usr / bin / python kullanır ve bu da geçerli bir çözüm değildir.
mschuett

5
High Sierra'da demlemek için sadece python2/ usr / local / bin'de python; set export PATH="/usr/local/opt/python/libexec/bin:$PATH"içinde~/.bash_profile
tormodatt

86

Bakınız: Homebrew'da python nasıl bağlanır?

$ brew link --overwrite python
Linking /usr/local/Cellar/python/2.7.3... 28 symlinks created
$ which python
/usr/local/bin/python

11
Python'u kurduktan sonra bu neden olmasın?
Ben West

4
@BenWest çünkü python3, şimdi python yerine python2 alıyorsunuz.
georgexsh

1
Etkinleştirmedim.
theonlygusti

1
Benim durumumda, bu komutu çalıştırdıktan sonra terminali yeniden başlatmam gerekiyordu ( Martijn Courteaux'nun cevabına göre )
jkmartindale

2
bu bağlantılar benim için python @ 2
Andrew B.

63

Hızlı düzeltme:

  1. Açık /etc/paths
  2. Satırların sırasını değiştirme (en üstteki öncelik)

Benim durumumda /etc/pathsşöyle görünüyor:

/usr/local/bin
/usr/local/sbin
/usr/bin
/bin
/usr/sbin
/sbin

OSX'teki yollar hakkında daha fazla bilgi edinmek istiyorsanız, bu makaleyi oldukça yararlı buldum:

http://muttsnutts.github.com/blog/2011/09/12/manage-path-on-mac-os-x-lion/


1
Teşekkür ederim, yukarıdaki tüm cevaplar sorunumu çözdü, ama yaptı! Çok teşekkür ederim!
Sean

7
bununla ilgili sorun, tüm kullanıcılar için değiştirmesidir: /, IMO daha spesifik bir şeyi değiştirmek daha iyidir.
Randall Hunt

Ne ve nasıl?
Mike Kormendy

63

Kendisi yükleyici homebrew önerdiği gibi, bu eklemeyi unutmayın .bashrcya .zshrc:

export PATH="/usr/local/opt/python/libexec/bin:$PATH"

11
Bu, High Sierra'da doğru yöntemdir. Oyvermek!
tormodatt

MacOS varsayılan olarak zsh terminalini kullanır, bu nedenle değiştirilmesi gereken dosya .zshrcdeğil .bashrcdosyadır.
user394430

1
Bunun dışında başka cevapların hiçbiri işe yaramadı! Burada macOS Catalina çalışıyor. Teşekkürler!
Ali Akbar

Doğru cevap bu
HarshMarshmallow

44

OSX High Sierra için "demlemek python" yaptım. $PATHVardı /usr/local/binbaşka yolu önce ama yine de which pythonsistemin piton işaret edildi.

Daha derine baktığımda, çalıştırılabilir bir python olmadığını buldum /usr/local/bin. Yürütülebilir dosya olarak adlandırılır python2. Bu sorunu gidermek için simgesine pythonişaret eden bir bağlantı oluşturun python2:

/usr/local/bin $: ln -s python2 python


4
Bunun High Sierra
RandomDeduction'daki

Kahramanımsın. Bu çözümü fark etmediğime inanamıyorum!
Smokin Joe

3
Ayrıca başvurmak için terminali yeniden başlatmanız gerekiyor
lexa-b

3
$ cd / usr / local / bin $ ln -s python3 python
Pnemonic

1
ve varsayalım pip pip3 (veya pip2) sym-link?
alexP_Keaton

23

Homebrew, "/ usr / bin" içindeki öğelerin yerini ALMAZ. Yolunuza "/ usr / local / bin" i "/ usr / bin" ifadesinin önüne koymak, "hangi python" size "/ usr / local / bin / python" verecektir.

/ Usr / bin / python (veya / usr / bin / ruby) yerine kesinlikle önerilmemektedir.


2
Ama öyle değil!
Ocak'ta theonlygusti

22

pythonformula şimdi kullanır python3( şimdilik v3.6.5), brew dizini bağlayacaktır :

/usr/local/opt/python -> ../Cellar/python/3.6.5

ayrıca ikiliyi bağlar :

/usr/local/bin/python3 -> ../Cellar/python/3.6.5/bin/python3

Hala kullanmanız gerekiyorsa python2.x, şunu kullanın:

brew install python@2

Homebrew'ları kullanmak için pythonsadece dizini PATH'e koyun, bash için:

export PATH="/usr/local/opt/python/libexec/bin:$PATH"

balık için:

set -x PATH /usr/local/opt/python/libexec/bin $PATH

Not:

  1. bunu yapmak sistemin varsayılan sürümünü gölgeleyecektir python
  2. homebrew, python'u /usr/local/share/pythoneski sürümlerde bağlamak için kullanılır .

Benim için hüner buydu. Varsayılan olarak, demlemek yüklemeler python3yolunuzda - değil denilen bir exec pythonÖzellikle başvuran .. /usr/local/opt/python/libeexec/binbenim yolundaki öncesinde diğer dizinleri şeyler dizildi.
cam8001

13

$ PATH değerinizi değiştirin, bunu bashrc veya bash_profile dosyasına ekleyin:

export PATH=/usr/local/bin:/usr/local/sbin:~/bin:$PATH

daha fazla buraya tıklayın: Sayı # 89791


Benim editörüm "PyCharm" ~ / .bashrc kullanıyordu ve bu küçük gem kadar demlemek python çalışamadı. @Ben
JamesDeHart

10

Homebrew pythonunun bulunduğu her yerde / usr / bin'den önce arandığından emin olmak için PATH çevresel değişkeninizi düzenlemeniz gerekir. Kabuk yapılandırmanızda, PYTHON gibi bir değişkenin komut satırından $PYTHONziyade istediğiniz python ve çağrı sürümüne ayarlanması için de ayarlayabilirsiniz python.

Ayrıca, başka bir posterin de belirttiği gibi (ve özellikle mac'ta) başka bir python kurulumuna işaret etmek için / usr / bin içindeki python ile uğraşmayın. Sadece yaparsan bela istiyorsun.


9

Yaptım brew install python, iyiydim $PATH, ama yine which pythonde bana yüklü bir sistem verdim. Terminali yeniden başlatmak sorunu çözdü.


1
Tüm yapmam gereken bu. Yine de bunu ne zaman yapacağımdan emin değilim. Sadece çalıştır brew install pythonve sonra terminali yeniden başlat gibi geliyor ve başka bir şey değil mi? Gerek yok brew unlink& brew link?
Con Antonakos

Demlemek prewhon kullanarak hemen kurduktan sonra, "hangi python" bana doğru yerel python yolunu verir, ancak "python" komutu sistemin bir çağırma yüklü olduğunu belirtir. Yeniden başlatma terminali düzeltildi.
Michelle

2
terminali yeniden başlatmanız gerekmez, deneyinhash -r
georgexsh

JFC, bunu okuyana kadar aklımı kaybettim. Zaten brew unlink & brew linkbirkaç kez yaptım . Terminali yeniden başlatmak için sadece gerekli
Dominic

6

pythonşimdi işaret eder python3, ihtiyacınız varsa şunu yapın python 2: brew install python@2ve sonra .zshrc veya .bashrc dosyanızda export PATH="/usr/local/opt/python@2/libexec/bin:$PATH" Şimdi, pyhon --version= Python 2.7.14 ve python3 --version= Python 3.6.4. Terminalimde görmeye alıştığım davranış bu.


5

Ben homebrew python varsayılan yapmak için araçlar olduğuna inanıyorum, ama bence bir sorunu çözmek için doğru yolu sistem python yolları ile karışıklık değil: homebrew python varsayılan olacağını bir virtualenv oluşturmak daha iyidir (virtualenv kullanarak - -python seçeneği). Gibi araçları kullanmak python_selectneredeyse her zaman kötü bir fikirdir.


2

Python sürümlerini yüklemek ve bunlar arasında geçiş yapmak için bunun yerine pyenv kullanın. Yıllardır aynı şeyi yapan rbenv kullanıyorum, ama Ruby için. Bundan önce sürümleri yönetmek cehennemdi.

Consult pyenv en github sayfasını kurulum talimatları için. Temelde şöyle gider: - Homebrew kullanarak pyenv yükleyin. brew install pyenv - Pyenv'in sihir yapabilmesi için kabuk başlangıç ​​komut dosyanızın sonuna bir işlev ekleyin.echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile

  • İhtiyacınız olan Python'un birçok farklı sürümünü kurmak için pyenv kullanın. pyenv install 3.7.7.
  • Varsayılan (global) sürümü yeni yüklediğiniz modern bir sürüme ayarlayın. pyenv global 3.7.7.
  • Farklı bir python sürümü kullanması gereken bir proje üzerinde çalışıyorsanız, içine bakın pyevn local. Bu, projenizin klasöründe python sürümünü belirten bir dosya oluşturur. Pyenv, bu dosyadaki sürümle birlikte genel python sürümünü geçersiz kılacaktır.

1

Sadece yap:

brew install python
brew link python

Bunu yaptıktan sonra bunu bashrc veya bash_profile'ınıza ekleyin:

alias python='/usr/local/bin/python2'

Zevk almak!


Benim yaptığım problemle karşılaştığın anlaşılıyor. Demlemek bile, yarattığı tüm bağlantıları linkburada yanıtlar komutlar, içinde /usr/local/biniçindir python2yerine python. Bu sorunu çözmek için bir takma ad kullanmak kötü bir fikir gibi görünüyor, ancak henüz daha iyi bir şey bulamadım.
Patrick M

Takma ad yerine, sadece kopyaladım cp /usr/local/bin/python2 /usr/local/bin/pythonve iyi çalışıyor gibi görünüyordu. Bu daha çirkin bir çözüm mü?
kingb12

1

/usr/local/opt/python/libexec/binAçıkça şu adrese ekleyin .bash_profile:

export PATH="/usr/local/opt/python/libexec/bin:$PATH"

Bundan sonra, düzgün çalışmalıdır.


1

Eğer balık kabuğuysanız

echo 'set -g fish_user_paths "/usr/local/opt/python/libexec/bin" $fish_user_paths' >> ~/.config/fish/config.fish

0

/ Etc / yollarını düzenleyebilirsiniz. İşte benim:

/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

Ardından python sürümü için bir sembolik bağlantı ekleyin. Benim durumumda

$ cd /usr/local/bin
$ ln -s python3 python

İşte bu kadar!


0

High Sierra'dan beri şunları kullanmanız gerekir:

sudo chown -R $(whoami) $(brew --prefix)/*

Çünkü /usr/localartık chown edilemez


-7

Varsayılan Python ile ne demek istediğiniz hakkında bir fikriniz yok. Sistem Python yorumlayıcısını farklı bir sürümle değiştirmenin kötü bir uygulama olduğunu düşünüyorum. Sistem işlevselliği olabilir sistemde Python ve spesifik modüllerin ya da belirli bir Python sürümü üzerinde bir şekilde bağlıdır. Bunun yerine güvenli bir farklı bir yerde özel Python yüklemeleri kurmak ve çağrı için gerektiği gibi $ PATH ayarlamak size varsayılan Python aramak arama yerine bir yolu üzerinden Python.


5
os x'te homebrew python'unun sistemin python'unun yolundan önce gelmesi riski yoktur. Bu çok yaygın.
Steven Noble

3
Ayrıca, Apple olmayan bir Python kullanma ihtiyacı gerçek. Matplotlib, NumPy ve SciPy'yi 'varsayılan' (aka Apple) Python ile çalıştırmaya çalışıyorum. Bu, uzantıları birbirinden ayıran 32/64 bit tedavisi ile ilgili bir şey. Bunun yerine güzel bir demlemek için çok, çok, çok sevindim. Ve varsayılan olarak ('demlemek kurulum python') Demlemek tam olarak ne demek istediğini yapar - ikinci Python'u yolları geçersiz kılmak yerine ayrı bir yapıya kurar (tam olarak bu SO sorunun neden ortaya çıktığıdır).
akauppi
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.