Bagaimana saya bisa mengubah versi Python default di Snow Leopard?

27

Saya baru-baru ini memutakhirkan penginstalan Mac OS X 10.5 Leopard saya menjadi 10.6 Snow Leopard, dan dengan itu muncul versi pemutakhiran Python, 2.6.1 (alih-alih jika 2.5.1). Sekarang ketika saya mengetik pythondi Terminal saya masih mendapatkan

Python 2.5.1 (r251:54869, Apr 18 2007, 22:08:04) 
[GCC 4.0.1 (Apple Computer, Inc. build 5367)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

Saya mencari /usr/bin/dan menemukan bahwa untuk mendapatkan Python 2.6 saya harus mengetik python2.6.

Pertanyaannya adalah: Bagaimana cara membuat pythonpeta perintah ke Python 2.6?

SBSTN
sumber

Jawaban:

21

Mudah:

defaults write com.apple.versioner.python Version 2.6

Lihat man pythonpenjelasan lengkap dari Apple.

Juga, satu gotcha: pastikan Anda menjalankan Python yang menyertai komputer Anda dan bukan yang lain yang Anda instal. Lakukan ini dengan mengetik which pythondi prompt perintah Anda. Seharusnya menunjuk ke /usr/bin/python. Saya hanya menyebutkan ini karena default saya adalah 2,6 di bawah Snow Leopard (itu 2,5 ketika saya menggunakan Leopard). Jadi fakta bahwa Anda mendapatkan 2,5 dapat menunjukkan bahwa ada sesuatu yang lain di jalan Anda.

Memperbarui

Untuk menanggapi komentar di bawah ini:

Ini tidak melakukan apa yang diminta orang.

Itu berlaku untuk saya, di OS X 10.8.2. Setelah melakukan defaults write com.apple.versioner.python Version 2.6, versi default Python memang 2.6. (Dan juga setelah berubah kembali ke 2.7.)

Ini benar apakah saya menjalankan pythonsecara langsung, atau menggunakan skrip yang dapat dieksekusi dimulai dengan #!/usr/bin/env python- Saya mendapatkan versi yang diharapkan dari Python.

Ini tidak menyelesaikan symlink di /System/Library/Frameworks/Python.framework/Versions di mana titik saat ini ke 2.7 yang dapat menyebabkan masalah (karena masih dalam sys.path dengan 2.6!)

Memang, itu tidak memperbaiki symlink itu.

Namun, jalankan skrip pendek yang print()s sys.pathdan (setidaknya pada pengaturan saya yang relatif default) direktori 2.6 perpustakaan berada di jalur dan 2,7 dir tidak di jalur. CurrentDirektori symlinked juga tidak ada di path. Jadi itu seharusnya tidak menjadi masalah bagi kebanyakan skrip.

Namun, mungkin — belum diuji — bahwa Currentsymlink digunakan oleh salah satu easy_installatau pip. Itu akan menyebabkan masalah. Tampaknya memang seperti bug bahwa symlink tidak diperbarui ketika Anda memperbarui versi Python.

Nate
sumber
3
Kamu benar. Saya sudah lama menginstal MacPython dan itu mengacaukan variabel PATH saya begitu pythonmenunjuk /Library/Frameworks/Python.framework/Versions/Current/bin. Tentu saja itu tidak ditingkatkan menjadi 2,6. Jadi saya mengganti variabel PATH saya dengan variabel default yang saya temukan di Google, dan sekarang akan menghapus MacPython dari sistem saya.
SBSTN
@ SBSTN Saya punya masalah yang sama (jalur python menunjuk ke /Library/Frameworks/Python.framework/Versions/Current/bin) Bagaimana cara mengubah ini?
Zach
Tidak bekerja dengan Xcode4 karena tidak ada / Library / Frameworks / Python * lagi juga / usr / bin / python menunjuk ke tempat lain. Ada ide? MacPorts akan menjadi solusi tetapi saya tidak ingin menginstalnya.
Alex
Saya telah menginstal Xcode 4 dan masih berfungsi seperti yang dijelaskan. /usr/bin/pythonadalah executable, bukan tautan. /usr/bin/python2.6adalah tautan yang menunjuk ../../System/Library/Frameworks/Python.framework/Versions/2.6/bin/python2.6. Mengingat bahwa Python executable di /System/Librarydalamnya harus tersedia terlepas dari apakah / versi Xcode apa yang diinstal.
Nate
Ini tidak melakukan apa yang diminta orang. Tidak yakin mengapa itu jawabannya.
010110110101
12

Saya akan menyarankan menggunakan port mac ...

Ada paket yang disebut python_select yang memungkinkan menggunakan ular piton secara paralel. Jadi instal dulu port mac jika belum diinstal.

Pertama instal paket python_select:

sudo port install python_select

Sudah sekarang Anda dapat memeriksa distribusi python mana yang tersedia di sistem Anda. Hanya mengeluarkan perintah:

port select --list python     (MacPorts 2.x)
python_select -l              (MacPorts 1.x)

Dalam kasus saya itu dicetak di versi python setidaknya yang datang secara default dengan Snow Leopard: python26-apple.

port select --show python     (MacPorts 2.x)
python_select -s              (MacPorts 1.x)

memperlihatkan versi yang saat ini dipilih, mis python26-apple. Jadi begini, paket ini bisa dimainkan dengan Mac. Untuk masalah opsi lainnya

port select                   (MacPorts 2.x)
python_select -h              (MacPorts 1.x)

Daripada Anda dapat mencari versi python yang tersedia di repositori ports:

port search python

Ini akan menghasilkan daftar panjang ular sanca yang tersedia.

Untuk menginstal paket yang diinginkan, misalnya python 2.4 jalankan:

sudo port install python24

Sekarang python_select -sakan menunjukkan python yang baru diinstal juga. Untuk beralih ke masalah python 2.4:

sudo port select --set python python24  (MacPorts 2.x)
sudo python_select python24             (MacPorts 1.x)

Perintah ini persisten di antara shell.

ovan
sumber
5

Dengan asumsi Anda menggunakan bash, ketik:

% type -a python

Itu akan menunjukkan Anda semua executable "python", alias, builtin shell (kemungkinan tidak ada) atau fungsi bash di PATH Anda.

Ini akan membantu Anda mengidentifikasi dengan lebih baik apa yang terjadi di sini.

Doug Harris
sumber
3

Anda ingin membuat symlink ke versi yang diinginkan.

cd /Library/Frameworks/Python.framework/Versions 
sudo rm Current 
sudo ln -s /Library/Frameworks/Python.framework/Versions/2.6 Current

Ini menghapus pointer saat ini ke versi Python default Anda dan menetapkannya ke versi 2.6 Anda.

ingin tahu
sumber
1
Ini mirip dengan apa yang saya lakukan. Tapi sebaliknya saya meletakkan link di / usr / bin dan menyebutnya "python" (menimpa executable "python" lama yang diletakkan Apple di sana). Jadi: sudo ln -s /path/to/2.7 /usr/bin/python. Ini adalah cara yang dilakukan di Linux dan itu masuk akal.
Nacht
0

Tidak ideal (IMO), tetapi ini memperbaiki semua aplikasi yang saya cari pythondi /usr/local/bin/.

sudo cp /usr/local/bin/python3 /usr/local/bin/python

Tentu saja, setelah menginstal versi Python terbaru.

AGDM
sumber
ini ide yang sangat buruk. Menggunakan symlink dapat dipahami, tetapi menyalin biner bolak-balik BUKAN ide yang baik.
Jakuje
Dipahami, saya hanya ingin mengetikkan python di terminal dan mengarahkannya ke Python3.x ... belum terlambat untuk memperbaikinya dengan benar.
AGDM