Bagaimana cara menggunakan minuman yang dipasang Python sebagai Python default?


188

Saya mencoba untuk beralih ke Homebrew (setelah menggunakan fink dan macport) pada Mac OS X 10.6.2. Saya telah menginstal python 2.7 dengan

brew install python 

Masalahnya adalah, bertentangan dengan Macport, tampaknya tidak ada utilitas python_select, dan mac python default saya selalu default

which python

berikan padaku

/usr/bin/python

dan /usr/bin/pythonbukan symlink

Bagaimana saya bisa membuat rasa minuman python menjadi python default saya?


14
Homebew tidak lagi membayangi instalasi sistem python. Anda dapat melakukannya: export PATH="/usr/local/opt/python/libexec/bin:$PATH"sumber: discourse.brew.sh/t/…
George

3
Saya mencoba semua jawaban yang disebutkan, / usr / local / bin datang sebelum / usr / bin di $ PATH saya. Saya mencoba membuat tautan bir dan memutus tautan, pembuat bir tidak melaporkan / usr / bin sebelum / usr / local / bin masalah. Masih ketika saya melakukan python mana, saya mendapatkan / usr / bin / python dan bukan yang terinstal dengan brew.
Ujwal Ratra

coba ... yang python2
Fraser

Jawaban:


118

Saat Anda menggunakan Homebrew, perintah berikut memberikan gambar yang lebih baik:

brew doctor

Keluaran:

==> / usr / bin muncul sebelum / usr / local / bin Ini berarti bahwa program yang disediakan sistem akan digunakan sebagai pengganti program yang disediakan oleh Homebrew. Ini merupakan masalah jika Anda mis. buatan Python.

Pertimbangkan untuk mengedit .bash_profile Anda untuk meletakkan: / usr / local / bin di depan / usr / bin di $ PATH Anda.


4
Pastikan Anda tidak memiliki / user / local / bin DUA KALI di jalur Anda. Untuk beberapa alasan di PATH saya itu muncul sebelum dan sesudah / usr / bin dan itu membuat saya gila.
vinaut

1
banyak program menggunakan / usr / bin / python di header membuat ini bukan solusi yang layak.
mschuett

5
untuk minuman di High Sierra hanya python2di / usr / local / bin, untuk adil python; diatur export PATH="/usr/local/opt/python/libexec/bin:$PATH"di~/.bash_profile
tormodatt

86

Lihat: Bagaimana cara symlink python di Homebrew?

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

11
mengapa ini tidak terjadi ketika saya membuat instalasi python?
Ben West

4
@BenWest karena python3, sekarang Anda mendapatkan python2 daripada python.
georgexsh

1
Saya belum mengaktifkannya.
theonlygusti

1
Dalam kasus saya, saya perlu me-restart terminal setelah menjalankan perintah ini (sebagaimana dicatat oleh jawaban Martijn Courteaux )
jkmartindale

2
ini menghubungkan python @ 2 untuk saya
Andrew B.

63

Perbaikan cepat:

  1. Buka /etc/paths
  2. Ubah urutan garis (prioritas tertinggi di atas)

Dalam kasus saya /etc/pathsterlihat seperti:

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

Jika Anda ingin tahu lebih banyak tentang path di OSX, saya menemukan artikel ini cukup berguna:

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


1
Terima kasih, semua jawaban di atas memang menyelesaikan masalah saya, tetapi Anda lakukan! Terima kasih banyak!
Sean

7
masalah dengan ini adalah itu mengubahnya untuk semua pengguna: /, IMO lebih baik untuk mengubah sesuatu yang lebih spesifik.
Randall Hunt

@ RandallHunt suka apa dan bagaimana?
Mike Kormendy

63

Seperti yang disarankan oleh penginstal homebrew itu sendiri, pastikan untuk menambahkan ini ke Anda .bashrcatau .zshrc:

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

11
Ini adalah metode yang benar di High Sierra. Pilih!
tormodatt

MacOS default ke terminal zsh, jadi kemungkinan besar itu adalah .zshrcfile dan bukan .bashrcfile yang perlu diubah.
user394430

1
Tidak ada jawaban lain yang bekerja untuk saya kecuali ini! menjalankan macOS Catalina di sini. Terima kasih!
Ali Akbar

Ini adalah jawaban yang benar
HarshMarshmallow

44

Saya melakukan "brew install python" untuk OSX High Sierra. The $PATHpunya /usr/local/binsebelum jalan yang lain tapi masih which pythonmenunjuk ke python sistem.

Ketika saya melihat lebih dalam, saya menemukan bahwa tidak ada python yang dapat dieksekusi /usr/local/bin. Dapat dieksekusi bernama python2. Untuk memperbaiki masalah ini, buat tautan simbolis yang pythonmenunjuk ke python2:

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


4
Mengonfirmasi ini memperbaiki masalah pada High Sierra
RandomDeduction

Kamu adalah pahlawanku. Tidak percaya saya tidak menyadari solusi ini!
Smokin Joe

3
Juga perlu me-restart terminal untuk mendaftar
lexa-b

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

1
dan saya kira juga sym-link pip ke pip3 (atau pip2)?
alexP_Keaton

23

Homebrew TIDAK mengganti barang di "/ usr / bin". Anda hanya ingin meletakkan "/ usr / local / bin" di depan "/ usr / bin" di jalur Anda, lalu "python" yang akan memberi Anda "/ usr / local / bin / python".

Mengganti / usr / bin / python (atau / usr / bin / ruby) sangat tidak direkomendasikan.


2
Tapi ternyata tidak!
theonlygusti

22

pythonrumus sekarang menggunakan python3(v3.6.5 untuk saat ini), minuman akan menautkan direktori :

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

itu juga akan menautkan biner :

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

Jika Anda masih perlu menggunakan python2.x, gunakan:

brew install python@2

Untuk menggunakan homebrew's python, cukup letakkan direktori di PATH, untuk bash:

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

untuk ikan:

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

catatan:

  1. melakukan ini akan membayangi versi standar sistem python
  2. homebrew digunakan untuk menghubungkan python ke /usr/local/share/pythondalam versi yang lebih lama.

Ini trik untuk saya. Secara default, python3buat instalasi di jalur Anda - bukan eksekutif yang dipanggil python.. Secara khusus merujuk /usr/local/opt/python/libeexec/binsebelum direktori lain di jalur saya menyelesaikan masalah.
cam8001

13

Ubah $ PATH Anda, Tambahkan ini di bashrc Anda atau bash_profile:

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

lebih banyak klik di sini: Edisi # 89791


Editor saya "PyCharm" menggunakan ~ / .bashrc dan saya tidak bisa membuat python minuman berjalan sampai permata kecil ini. Terima kasih @Aben
JamesDeHart

10

Anda perlu mengedit variabel lingkungan PATH Anda untuk memastikan di mana pun homebrew python berada dicari sebelum / usr / bin. Anda juga dapat mengatur hal-hal di konfigurasi shell Anda untuk memiliki variabel seperti PYTHON diatur ke versi python dan panggilan yang Anda inginkan $PYTHONdaripadapython dari baris perintah.

Juga, seperti yang dinyatakan poster lain (dan terutama pada mac) JANGAN main-main dengan python di / usr / bin untuk mengarahkannya ke instalasi python lain. Anda hanya meminta masalah jika Anda melakukannya.


9

Saya lakukan brew install python, saya $PATHbaik, tapi tetap saja, which pythonmemberi saya sistem yang diinstal. Restart terminal, perbaiki.


1
Ini semua yang perlu saya lakukan. Saya tidak yakin kapan harus melakukan ini. Kedengarannya seperti hanya mengeksekusi brew install pythondan kemudian, restart terminal, dan tidak ada yang lain? Tidak perlu brew unlink& brew link?
Con Antonakos

Tepat setelah menginstal python menggunakan brew, "yang python" memberi saya jalur python lokal yang benar, tetapi perintah "python" menunjukkan bahwa itu adalah sistem yang diinstal yang memohon. Nyalakan kembali terminal.
Michelle

2
restart terminal tidak perlu, cobahash -r
georgexsh

JFC, saya kehilangan akal sampai saya membaca ini. Saya sudah melakukan brew unlink & brew linkbeberapa kali. Hanya perlu me-restart terminal
Dominic

6

pythonsekarang menunjuk ke python3, jika Anda perlu python 2maka lakukan: brew install python@2dan kemudian dalam file .zshrc atau .bashrc Anda export PATH="/usr/local/opt/python@2/libexec/bin:$PATH" Sekarang, pyhon --version= Python 2.7.14 dan python3 --version= Python 3.6.4. Itulah perilaku yang biasa saya lihat di terminal saya.


5

Saya percaya ada cara untuk membuat homebrew python default, tetapi menurut saya cara yang tepat untuk menyelesaikan masalah adalah tidak mengacaukan dengan jalur sistem python: lebih baik untuk membuat virtualenv di mana homebrew python akan menjadi default (dengan menggunakan virtualenv - opsi -python). Menggunakan alat seperti python_selecthampir selalu merupakan ide yang buruk.


2

Gunakan pyenv untuk menginstal dan beralih di antara versi Python. Saya telah menggunakan rbenv selama bertahun-tahun yang melakukan hal yang sama, tetapi untuk Ruby. Sebelum itu adalah versi mengelola neraka.

Lihat halaman github pyenv untuk instruksi pemasangan. Pada dasarnya seperti ini: - Instal pyenv menggunakan homebrew. brew install pyenv - Tambahkan fungsi ke akhir skrip startup shell Anda sehingga pyenv dapat melakukan itu sihir.echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile

  • Gunakan pyenv untuk menginstal berbagai versi Python yang Anda butuhkan. pyenv install 3.7.7.
  • Atur versi default (global) ke versi modern yang baru saja Anda instal. pyenv global 3.7.7.
  • Jika Anda mengerjakan proyek yang perlu menggunakan versi python yang berbeda, lihatlah pyevn local. Ini membuat file di folder proyek Anda yang menentukan versi python. Pyenv akan terlihat menimpa versi python global dengan versi dalam file itu.

1

Kerjakan saja:

brew install python
brew link python

Setelah melakukan itu, tambahkan ini ke bashrc Anda atau bash_profile:

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

Nikmati!


Sepertinya Anda mengalami masalah yang sama dengan saya. Semua tautan yang dibuat, bahkan dengan linkperintah dalam jawaban di sini, /usr/local/binadalah untuk python2alih - alih python. Menggunakan alias untuk mengatasi ini sepertinya ide yang buruk, tetapi saya belum menemukan yang lebih baik.
Patrick M

Alih-alih alias, saya hanya menyalinnya cp /usr/local/bin/python2 /usr/local/bin/pythondan sepertinya berfungsi dengan baik. Apakah ini solusi yang lebih buruk?
kingb12

1

Tambahkan /usr/local/opt/python/libexec/binsecara eksplisit ke .bash_profile:

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

Setelah itu, seharusnya berfungsi dengan benar.


1

Jika Anda cangkang ikan

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

0

Anda dapat mengedit / etc / paths. Ini milik saya:

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

Kemudian tambahkan symlink untuk versi python. Dalam kasus saya

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

Voila!


0

Sejak High Sierra, Anda perlu menggunakan:

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

Ini karena /usr/localtidak bisa lagi dicacah


-7

Tidak tahu apa yang Anda maksud dengan Python default. Saya menganggap itu praktik buruk untuk mengganti sistem interpreter Python dengan versi yang berbeda. Fungsionalitas sistem mungkin tergantung pada sistem Python dan modul tertentu atau versi Python tertentu. Alih-alih instal instalasi Python khusus Anda di tempat berbeda yang aman dan sesuaikan $ PATH Anda sesuai kebutuhan untuk memanggil Anda Python melalui pencarian jalur alih-alih mencari Python default.


5
tidak ada risiko di os x untuk memiliki python homebrew datang sebelum sistem python di jalan. Ini sangat umum.
Steven Noble

3
Juga, kebutuhan untuk menggunakan Python non-Apple adalah nyata. Saya sudah mencoba untuk mendapatkan matplotlib, NumPy dan SciPy dan berjalan dengan Python 'default' (alias Apple). Ini adalah sesuatu tentang memperlakukan 32/64 bit yang hanya memecah ekstensi. Sangat, sangat, sangat senang memiliki minuman yang baik sebagai gantinya. Dan secara default ('brew install python') Brew melakukan persis seperti yang Anda maksud - Brew menginstal Python kedua ke struktur terpisah, bukan mengesampingkan jalur (yang justru mengapa pertanyaan SO ini muncul).
akauppi
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.