Làm cách nào để thay đổi phiên bản Python mặc định trên Snow Leopard?


27

Gần đây tôi đã nâng cấp bản cài đặt Mac OS X 10.5 Leopard lên 10.6 Snow Leopard và đi kèm với đó là phiên bản nâng cấp của Python, 2.6.1 (thay vì 2.5.1). Bây giờ khi tôi gõ pythonvào Terminal tôi vẫn nhận được

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.
>>>

Tôi nhìn vào /usr/bin/và thấy rằng để có được Python 2.6 tôi phải gõ python2.6.

Câu hỏi là: Làm cách nào để tạo pythonbản đồ lệnh cho Python 2.6?

Câu trả lời:


21

Dễ thôi:

defaults write com.apple.versioner.python Version 2.6

Xem man pythonđể được giải thích đầy đủ từ Apple.

Ngoài ra, một gotcha: đảm bảo bạn đang chạy Python đi kèm với máy tính của bạn chứ không phải một số khác mà bạn đã cài đặt. Làm điều này bằng cách gõ which pythontại dấu nhắc lệnh của bạn. Nó nên chỉ vào /usr/bin/python. Tôi chỉ đề cập đến điều này vì mặc định của tôi là 2,6 theo Snow Leopard (nó là 2,5 khi tôi đang sử dụng Leopard). Vì vậy, thực tế là bạn đang nhận được 2,5 có thể chỉ ra rằng có một thứ khác trên con đường của bạn.

Cập nhật

Để giải quyết ý kiến ​​dưới đây:

Điều này không làm những gì mọi người đang yêu cầu.

Nó làm cho tôi, trong OS X 10.8.2. Sau khi thực hiện defaults write com.apple.versioner.python Version 2.6, phiên bản mặc định của Python thực sự là 2.6. (Và tương tự như vậy sau khi thay đổi trở lại 2.7.)

Điều này đúng cho dù tôi chạy pythontrực tiếp hay sử dụng tập lệnh thực thi bắt đầu bằng #!/usr/bin/env pythondòngII để có phiên bản Python dự kiến.

Điều này không giải quyết được liên kết tượng trưng trong / Hệ thống

Thật vậy, nó không sửa được symlink đó.

Tuy nhiên, chạy một kịch bản ngắn mà print()là sự sys.pathvà (ít nhất là trên thiết lập tương đối mặc định của tôi) 2.6 thư mục thư viện đang trên đường dẫn và 2,7 dirs là không trên con đường. Cũng không phải là Currentthư mục symlinked trên đường dẫn. Vì vậy, nó không phải là một vấn đề cho hầu hết các kịch bản.

Tuy nhiên, rất có thể, Haiti đã không thử nghiệm trên mạng rằng các Currentliên kết tượng trưng được sử dụng bởi một trong hai easy_installhoặc pip. Điều đó sẽ gây ra vấn đề. Có vẻ như đó là một lỗi mà symlink không được cập nhật khi bạn cập nhật phiên bản Python.


3
Bạn đa đung. Tôi đã có một thời gian dài trước đây cài đặt MacPython và hơi say lên biến PATH của tôi vì vậy pythonchỉ vào /Library/Frameworks/Python.framework/Versions/Current/bin. Đương nhiên, điều đó đã không được nâng cấp lên 2.6. Vì vậy, tôi đã thay thế biến PATH của mình bằng biến mặc định mà tôi tìm thấy trên Google và bây giờ sẽ xóa MacPython khỏi hệ thống của tôi.
SBSTN

@SBSTN Tôi đã gặp vấn đề tương tự (đường dẫn python trỏ đến /Library/Frameworks/Python.framework/Versions/Current/bin) Làm cách nào để thay đổi điều này?
Zach

Không hoạt động với Xcode4 vì không còn / Library / Frameworks / Python * nữa và cũng không / usr / bin / python trỏ đến bất kỳ nơi nào khác. Có ý kiến ​​gì không? MacPorts sẽ là một giải pháp nhưng tôi không muốn cài đặt nó.
Alex

Tôi đã cài đặt Xcode 4 và nó vẫn hoạt động như mô tả. /usr/bin/pythonlà một thực thi, không phải là một liên kết. /usr/bin/python2.6là một liên kết trỏ đến ../../System/Library/Frameworks/Python.framework/Versions/2.6/bin/python2.6. Cho rằng tệp thực thi Python có trong /System/Librarynó nên có sẵn bất kể phiên bản Xcode nào được cài đặt hay không.
Nate

Điều này không làm những gì mọi người đang yêu cầu. Không chắc tại sao đó là câu trả lời.
010110110101

12

Tôi sẽ đề nghị sử dụng cổng mac ...

Có một gói được gọi là python_select cho phép sử dụng song song pythons. Vì vậy, đầu tiên cài đặt cổng mac nếu chưa được cài đặt.

Đầu tiên cài đặt gói python_select:

sudo port install python_select

Bây giờ bạn có thể kiểm tra phân phối python nào có sẵn trên hệ thống của bạn. Chỉ cần ra lệnh:

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

Trong trường hợp của tôi, nó đã in ít nhất phiên bản python đi kèm với Snow Leopard : python26-apple.

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

hiển thị phiên bản hiện được chọn, ví dụ python26-apple. Bạn thấy đấy, gói này chơi độc đáo với Mac. Đối với nhiều lựa chọn vấn đề

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

Hơn bạn có thể tìm kiếm phiên bản python có sẵn trong kho lưu trữ cổng:

port search python

Điều này sẽ tạo ra một danh sách dài sẽ có sẵn trăn.

Để cài đặt các gói mong muốn, ví dụ python 2.4 thực thi:

sudo port install python24

Bây giờ python_select -ssẽ hiển thị các python mới cài đặt là tốt. Để chuyển sang vấn đề python 2.4:

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

Lệnh này là liên tục giữa các shell.


5

Giả sử bạn đang sử dụng bash, gõ:

% type -a python

Điều đó sẽ cho bạn thấy tất cả các tệp thực thi "python", bí danh, hàm dựng sẵn (có thể không có) hoặc các hàm bash trong PATH của bạn.

Điều này sẽ giúp bạn xác định tốt hơn những gì đang xảy ra ở đây.


3

Bạn muốn tạo một liên kết tượng trưng đến phiên bản mong muốn.

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

Thao tác này sẽ xóa con trỏ hiện tại về phiên bản Python mặc định của bạn và đặt nó thành phiên bản 2.6 của bạn.


1
Điều này tương tự như những gì tôi đã làm. Nhưng thay vào đó, tôi đặt liên kết vào / usr / bin và gọi nó là "python" (ghi đè lên "python" cũ mà Apple đặt ở đó). Vì vậy : sudo ln -s /path/to/2.7 /usr/bin/python. Đây là cách nó được thực hiện trong Linux và nó có ý nghĩa.
thuyền

0

Không lý tưởng (IMO), nhưng điều này đã sửa tất cả các ứng dụng đang tìm kiếm pythontrong tôi /usr/local/bin/.

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

Tất nhiên, sau khi cài đặt phiên bản Python mới nhất.


Đây thực sự là ý tưởng tồi. Sử dụng symlink có thể được hiểu, nhưng sao chép nhị phân qua lại KHÔNG phải là ý hay.
Jakuje

Hiểu rồi, tôi chỉ muốn gõ python trong terminal và để nó trỏ tới Python3.x ... không quá muộn để sửa lỗi này.
AGDM
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.