ฉันจะเปลี่ยนรุ่น Python เริ่มต้นบน Snow Leopard ได้อย่างไร


27

ฉันเพิ่งอัปเกรดการติดตั้ง Mac OS X 10.5 Leopard เป็น 10.6 Snow Leopard และด้วย Python เวอร์ชันอัพเกรดมา 2.6.1 (แทนที่จะเป็น 2.5.1) ตอนนี้เมื่อฉันพิมพ์pythonใน Terminal ฉันยังคงได้รับ

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

ผมมองใน/usr/bin/และพบว่าจะได้รับหลาม 2.6 python2.6ฉันต้องประเภท

คำถามคือ: ฉันจะทำpythonแผนที่คำสั่งไปที่ Python 2.6 ได้อย่างไร

คำตอบ:


21

มันเป็นเรื่องง่าย:

defaults write com.apple.versioner.python Version 2.6

ดูman pythonคำอธิบายทั้งหมดจาก Apple

อีกอย่างหนึ่ง gotcha: ตรวจสอบให้แน่ใจว่าคุณกำลังใช้งาน Python ที่มาพร้อมกับคอมพิวเตอร์ของคุณและไม่ใช่ที่คุณติดตั้ง ทำสิ่งนี้โดยพิมพ์which pythonที่ command prompt ของคุณ /usr/bin/pythonมันควรจะชี้ไปที่ ฉันพูดถึงสิ่งนี้เพียงเพราะค่าเริ่มต้นของฉันคือ 2.6 ภายใต้ Snow Leopard (เป็น 2.5 เมื่อฉันใช้ Leopard) ดังนั้นความจริงที่ว่าคุณได้รับ 2.5 อาจบ่งบอกว่ามีอย่างอื่นในเส้นทางของคุณ

ปรับปรุง

เพื่อแสดงความคิดเห็นด้านล่าง:

สิ่งนี้ไม่ได้ทำในสิ่งที่ผู้คนถาม

สำหรับฉันใน OS X 10.8.2 หลังจากดำเนินการdefaults write com.apple.versioner.python Version 2.6แล้วเวอร์ชันเริ่มต้นของ Python คือ 2.6 (และเช่นเดียวกันหลังจากเปลี่ยนกลับเป็น 2.7)

สิ่งนี้เป็นจริงไม่ว่าฉันจะเรียกใช้pythonโดยตรงหรือใช้สคริปต์ที่รันได้เริ่มต้นด้วย#!/usr/bin/env python- ฉันจะได้รับ Python เวอร์ชันที่คาดหวัง

นี่ไม่ได้แก้ปัญหา symlink ใน /System/Library/Frameworks/Python.framework/Versions โดยที่จุดปัจจุบันไปที่ 2.7 ซึ่งอาจทำให้เกิดปัญหา (เพราะยังอยู่ใน sys.path ที่มี 2.6!)

อันที่จริงมันไม่ได้แก้ไข symlink นั้น

อย่างไรก็ตามเรียกใช้สคริปต์สั้น ๆ ที่print()เป็นอุปกรณ์sys.pathและ (อย่างน้อยในการติดตั้งค่อนข้างเริ่มต้นของฉัน) 2.6 ไดเรกทอรีห้องสมุดมีบนเส้นทางและ 2.7 dirs มีไม่ได้บนเส้นทาง และไม่ใช่Currentไดเร็กทอรี symlinked บนพา ธ ดังนั้นจึงไม่ควรเป็นปัญหาสำหรับสคริปต์ส่วนใหญ่

แต่ก็เป็นไปได้ haven't ทดสอบ-ว่าCurrentsymlink จะใช้อย่างใดอย่างหนึ่งหรือeasy_install pipนั่นจะทำให้เกิดปัญหา ดูเหมือนว่าจะเป็นข้อบกพร่องที่ symlink ไม่ได้รับการปรับปรุงเมื่อคุณอัปเดตเวอร์ชัน Python


3
คุณพูดถูก ฉันได้รับการติดตั้งเป็นเวลานานแล้ว MacPython และเมาขึ้นตัวแปรเส้นทางของฉันเพื่อให้ชี้ไปที่python /Library/Frameworks/Python.framework/Versions/Current/binโดยธรรมชาติที่ไม่ได้รับการอัพเกรดเป็น 2.6 ดังนั้นฉันจึงเปลี่ยนตัวแปร PATH เป็นค่าเริ่มต้นที่ฉันพบบน Google และตอนนี้จะลบ MacPython จากระบบของฉัน
SBSTN

@SBSTN ฉันมีปัญหาเดียวกัน (python path ชี้ไปที่/Library/Frameworks/Python.framework/Versions/Current/bin) ฉันจะเปลี่ยนสิ่งนี้ได้อย่างไร
Zach

ไม่ทำงานกับ Xcode4 เนื่องจากไม่มี / Library / Frameworks / Python * อีกต่อไปและจะไม่ใช้ / usr / bin / python ในที่อื่น ความคิดใด ๆ MacPorts จะเป็นโซลูชัน แต่ฉันไม่ต้องการติดตั้ง
อเล็กซ์

ฉันติดตั้ง Xcode 4 แล้วและยังคงใช้งานได้ตามที่อธิบายไว้ /usr/bin/pythonเป็นไฟล์ปฏิบัติการไม่ใช่ลิงค์ คือการเชื่อมโยงที่ชี้ไปยัง/usr/bin/python2.6 ../../System/Library/Frameworks/Python.framework/Versions/2.6/bin/python2.6ระบุว่าสามารถใช้งาน Python /System/Libraryได้โดยไม่ต้องคำนึงว่าจะติดตั้ง Xcode เวอร์ชันใด /
เนท

สิ่งนี้ไม่ได้ทำในสิ่งที่ผู้คนถาม ไม่แน่ใจว่าทำไมมันถึงเป็นคำตอบ
010110110101

12

ฉันขอแนะนำให้ใช้พอร์ต Mac ...

มีแพ็คเกจชื่อ python_select ซึ่งอนุญาตให้ใช้ pythons แบบขนาน ดังนั้นก่อนติดตั้งพอร์ต macถ้ายังไม่ได้ติดตั้ง

ก่อนติดตั้งแพ็คเกจ python_select:

sudo port install python_select

ตอนนี้คุณสามารถตรวจสอบว่ามีการแจกจ่ายหลามแบบใดบนระบบของคุณ เพียงแค่ออกคำสั่ง:

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

python26-appleในกรณีของฉันมันพิมพ์รุ่นหลามน้อยที่มาโดยเริ่มต้นด้วยเสือดาวหิมะ:

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

python26-appleแสดงให้เห็นถึงรุ่นที่เลือกในปัจจุบันเช่น เห็นไหมว่าแพ็คเกจนี้เล่นกับ Mac ได้ดี สำหรับปัญหาตัวเลือกเพิ่มเติม

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

กว่าที่คุณจะสามารถค้นหาเวอร์ชั่นของไพ ธ อนได้ในที่เก็บพอร์ต:

port search python

สิ่งนี้จะสร้างรายการที่มีอยู่แบบยาว

ในการติดตั้งแพ็คเกจที่ต้องการเช่น python 2.4 execute:

sudo port install python24

ตอนนี้ the python_select -sจะแสดงไพ ธ อนที่ติดตั้งใหม่เช่นกัน หากต้องการเปลี่ยนเป็น python 2.4 ให้ทำดังนี้

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

คำสั่งนี้คงอยู่ระหว่างเชลล์


5

สมมติว่าคุณใช้ bash อยู่ให้พิมพ์:

% type -a python

ที่จะแสดงให้คุณเห็นว่า "python" executables, aliases, shell builtins (ไม่มีเลย) หรือ bash function ใน PATH ของคุณ

สิ่งนี้จะช่วยให้คุณระบุสิ่งที่เกิดขึ้นได้ดีขึ้น


3

คุณต้องการสร้าง symlink ให้เป็นเวอร์ชั่นที่ต้องการ

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

สิ่งนี้จะลบตัวชี้ปัจจุบันไปยังเวอร์ชัน Python เริ่มต้นของคุณและตั้งเป็นเวอร์ชัน 2.6


1
นี่คล้ายกับสิ่งที่ฉันทำ แต่แทนที่ฉันจะใส่ลิงค์ใน / usr / bin และเรียกมันว่า "python" (แทนที่ทับ "python" ที่เรียกใช้งานได้แบบเก่าที่ Apple ใส่ไว้) ดังนั้น: sudo ln -s /path/to/2.7 /usr/bin/python. นี่คือวิธีที่มันทำใน Linux และมันก็สมเหตุสมผล
Nacht

0

ไม่เหมาะ (IMO) แต่ตอนนี้คงปพลิเคชันทั้งหมดที่มองหาในของฉันpython/usr/local/bin/

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

แน่นอนหลังจากติดตั้งเวอร์ชัน Python ล่าสุด


นี่เป็นความคิดที่เลวจริงๆ การใช้ symlink นั้นสามารถเข้าใจได้ แต่การคัดลอกไบนารีไปมานั้นไม่ใช่ความคิดที่ดี
Jakuje

เข้าใจแล้วฉันแค่ต้องการพิมพ์หลามในเทอร์มินัลและให้ชี้ไปที่ Python3.x ... ไม่สายเกินไปที่จะแก้ไขได้อย่างถูกต้อง
AGDM
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.