วิธีเปลี่ยนเวอร์ชัน python เริ่มต้น


106

ฉันติดตั้ง python 3.2 ในเครื่อง Mac แล้ว หลังจากที่ฉันเรียกใช้/ Applications / Python 3.2 / Update Shell Profile.commandมันทำให้สับสนเมื่อฉันพิมพ์python -Vใน Terminal มันบอกว่าPython 2.6.1ฉันจะเปลี่ยนเวอร์ชัน python เริ่มต้นได้อย่างไร


ที่เกี่ยวข้อง: stackoverflow.com/a/18425592/939986
Santosh Kumar

ดูopensource.com/article/19/5/python-3-default-macpyenvสำหรับการแก้ปัญหาที่ดีโดยใช้
Thomas Ahle

คำตอบ:


115

นี่อาจเป็นที่พึงปรารถนาสำหรับความเข้ากันได้แบบย้อนกลับ

Python3 ทำลายความเข้ากันได้แบบย้อนกลับและโปรแกรมที่เรียกใช้ 'python' อาจคาดหวังว่า python2 คุณอาจมีโปรแกรมและสคริปต์มากมายที่คุณไม่รู้ด้วยซ้ำว่าคาดว่า python = python2 และการเปลี่ยนแปลงนี้จะทำให้โปรแกรมและสคริปต์เหล่านั้นเสียหาย

คำตอบที่คุณอาจมองหาคือคุณไม่ควรเปลี่ยนนี้

อย่างไรก็ตามคุณสามารถสร้างนามแฝงที่กำหนดเองในเชลล์ของคุณได้ วิธีที่คุณทำนั้นขึ้นอยู่กับเปลือก แต่บางทีคุณอาจทำได้alias py=python3

หากคุณกำลังสับสนเกี่ยวกับวิธีการที่จะเริ่มต้นเวอร์ชันล่าสุดหลามมันเป็นอย่างน้อยกรณีที่เกี่ยวกับ Linux ที่python3ใบของคุณpython2ติดตั้งเหมือนเดิม(เนื่องจากเหตุผลความเข้ากันได้ข้างต้น) ; ดังนั้นคุณสามารถเริ่ม python3 ด้วยpython3คำสั่ง


36
นี่เป็นข้อมูลที่เป็นประโยชน์ แต่คำถามคือ "ฉันจะเปลี่ยนเวอร์ชัน python เริ่มต้นได้อย่างไร" เราสามารถเพิ่มบางสิ่งเพื่อช่วยเหลือผู้ที่พยายามทำสิ่งนั้นได้หรือไม่?
dmeyerson

บน Mac การติดตั้ง Python3 จะทำให้ Python2 ไม่บุบสลายเช่นกัน แต่สำหรับฉันแล้วดูเหมือนว่าจะมีวิธีเปลี่ยนค่าเริ่มต้นที่รันเมื่อพิมพ์ "python" เท่านั้น ฉันเจอตัวเลือกครั้งเดียว ฉันเลือกที่จะปล่อยไว้ตามที่ "python --version" แสดง 2.7.12 และ "python3 --version" แสดง 3.7.0 ฉันเห็นด้วยกับ dmeyerson ข้างต้นว่าคำถามคือจะเปลี่ยนได้อย่างไร คำแนะนำของคุณเป็นสิ่งที่ดี แต่มีวิธีที่จะเปลี่ยนแปลงได้หากคุณต้อง (หรือต้องการจริงๆ)
Rich Sadowsky

3
> คำตอบที่คุณกำลังมองหาคือคุณไม่ควรเปลี่ยนแปลงสิ่งนี้ และที่นี่ฉันคิดว่า "ฉันจะเปลี่ยนสิ่งนี้ได้อย่างไร"!
duane

2
คำตอบนี้ถูกต้อง อย่าเปลี่ยนสิ่งที่pythonชี้ไปที่ระดับระบบที่คุณสามารถทำลายส่วนประกอบที่สำคัญของคุณ OS ถ้าคุณทำ ให้ใช้การติดตั้ง Python 3 แยกต่างหากและ Virtualen เพื่อให้ Python เริ่มต้นเป็น "local" ให้ตัวเอง
Martijn Pieters

51

ตรวจสอบตำแหน่งของ python 3

$ which python3
/usr/local/bin/python3

เขียนนามแฝงใน bash_profile

vi ~/.bash_profile  
alias python='/usr/local/bin/python3'

โหลด bash_profile อีกครั้ง

source ~/.bash_profile

ยืนยันคำสั่ง python

$ python --version
Python 3.6.5

2
นี่เป็นทางออกที่ไม่ดี ดังที่ได้กล่าวไว้ในคำตอบที่ยอมรับ$ pythonนั้นสงวนไว้สำหรับ python 2 โปรแกรมใด ๆ ที่คุณใช้งานบนคอมพิวเตอร์ของคุณที่คาดว่า python 2 จะได้รับ python 3 เนื่องจากนามแฝงซึ่งอาจมีผลเสียที่คาดไม่ถึง
โชนิน

ความตั้งใจของ Apple ไม่เกี่ยวข้องกับคำถาม
duane

45

บน Mac OS X โดยใช้โปรแกรมติดตั้ง python.org ตามที่คุณเห็นได้ชัดว่ามีคุณจำเป็นต้องเรียกงูหลาม 3 ไม่python3 pythonซึ่งปัจจุบันสงวนไว้สำหรับเวอร์ชัน Python 2 คุณยังสามารถใช้python3.2เพื่อเรียกใช้เวอร์ชันนั้นโดยเฉพาะ

$ which python
/usr/bin/python
$ which python3
/Library/Frameworks/Python.framework/Versions/3.2/bin/python3
$ cd /Library/Frameworks/Python.framework/Versions/3.2/bin/
$ ls -l
total 384
lrwxr-xr-x  1 root  admin      8 Apr 28 15:51 2to3@ -> 2to3-3.2
-rwxrwxr-x  1 root  admin    140 Feb 20 11:14 2to3-3.2*
lrwxr-xr-x  1 root  admin      7 Apr 28 15:51 idle3@ -> idle3.2
-rwxrwxr-x  1 root  admin    138 Feb 20 11:14 idle3.2*
lrwxr-xr-x  1 root  admin      8 Apr 28 15:51 pydoc3@ -> pydoc3.2
-rwxrwxr-x  1 root  admin    123 Feb 20 11:14 pydoc3.2*
-rwxrwxr-x  2 root  admin  25624 Feb 20 11:14 python3*
lrwxr-xr-x  1 root  admin     12 Apr 28 15:51 python3-32@ -> python3.2-32
lrwxr-xr-x  1 root  admin     16 Apr 28 15:51 python3-config@ -> python3.2-config
-rwxrwxr-x  2 root  admin  25624 Feb 20 11:14 python3.2*
-rwxrwxr-x  1 root  admin  13964 Feb 20 11:14 python3.2-32*
lrwxr-xr-x  1 root  admin     17 Apr 28 15:51 python3.2-config@ -> python3.2m-config
-rwxrwxr-x  1 root  admin  25784 Feb 20 11:14 python3.2m*
-rwxrwxr-x  1 root  admin   1865 Feb 20 11:14 python3.2m-config*
lrwxr-xr-x  1 root  admin     10 Apr 28 15:51 pythonw3@ -> pythonw3.2
lrwxr-xr-x  1 root  admin     13 Apr 28 15:51 pythonw3-32@ -> pythonw3.2-32
-rwxrwxr-x  1 root  admin  25624 Feb 20 11:14 pythonw3.2*
-rwxrwxr-x  1 root  admin  13964 Feb 20 11:14 pythonw3.2-32*

หากคุณติดตั้ง Python 2 จาก python.org ด้วยก็จะมีไดเร็กทอรี bin ของเฟรมเวิร์กที่คล้ายกันโดยไม่มีชื่อไฟล์ที่ทับซ้อนกัน (ยกเว้น 2to3)

$ open /Applications/Python\ 2.7/Update\ Shell\ Profile.command
$ sh -l
$ echo $PATH
/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Frameworks/Python.framework/Versions/3.2/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
$ which python3
/Library/Frameworks/Python.framework/Versions/3.2/bin/python3
$ which python
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
$ cd /Library/Frameworks/Python.framework/Versions/2.7/bin
$ ls -l
total 288
-rwxrwxr-x  1 root  admin    150 Jul  3  2010 2to3*
lrwxr-x---  1 root  admin      7 Nov  8 23:14 idle@ -> idle2.7
-rwxrwxr-x  1 root  admin    138 Jul  3  2010 idle2.7*
lrwxr-x---  1 root  admin      8 Nov  8 23:14 pydoc@ -> pydoc2.7
-rwxrwxr-x  1 root  admin    123 Jul  3  2010 pydoc2.7*
lrwxr-x---  1 root  admin      9 Nov  8 23:14 python@ -> python2.7
lrwxr-x---  1 root  admin     16 Nov  8 23:14 python-config@ -> python2.7-config
-rwxrwxr-x  1 root  admin  33764 Jul  3  2010 python2.7*
-rwxrwxr-x  1 root  admin   1663 Jul  3  2010 python2.7-config*
lrwxr-x---  1 root  admin     10 Nov  8 23:14 pythonw@ -> pythonw2.7
-rwxrwxr-x  1 root  admin  33764 Jul  3  2010 pythonw2.7*
lrwxr-x---  1 root  admin     11 Nov  8 23:14 smtpd.py@ -> smtpd2.7.py
-rwxrwxr-x  1 root  admin  18272 Jul  3  2010 smtpd2.7.py*

เกี่ยวกับ "ปัจจุบันสงวนไว้สำหรับเวอร์ชัน Python 2" คุณมีลิงก์สำหรับสิ่งนั้นหรือไม่
Wildcard

ถ้าฉันมี python 3.4 และ python 3.7 เมื่อฉันพิมพ์ python3 จากเทอร์มินัลมันจะเรียกใช้งาน python 3.4 ไม่ใช่ 3.7 จะแก้ไขได้อย่างไร
Ysh

31

คำถามเก่า แต่อีกทางหนึ่ง:

virtualenv --python=python3.5 .venv
source .venv/bin/activate

แน่นอน แต่ถ้าคุณไม่มีไฟล์ปฏิบัติการ (เช่น python3.5) วิธีนี้ใช้ไม่ได้
Afshin Mehrabani

ฉันคิดว่าสิ่งนี้ครอบคลุมถึงstackoverflow.com/questions/5506110/…
FreshPow

19

ทำสิ่งที่ถูกต้องทำในสิ่งที่ถูกต้อง!

---> ศูนย์เปิดเทอร์มินัลของคุณ

- ข้อมูลpython -Vแรกมีแนวโน้มที่จะแสดง:

Python 2.7.10

- อินพุตประการที่python3 -Vสองมีแนวโน้มว่าจะแสดง:

Python 3.7.2

- การป้อนข้อมูลครั้งที่สามwhere pythonหรือwhich pythonมีแนวโน้มว่าจะแสดง:

/usr/bin/python

- ข้อมูลที่สี่where python3หรือwhich python3มีแนวโน้มว่าจะแสดง:

/usr/local/bin/python3

- เพิ่มบรรทัดต่อไปนี้ที่ด้านล่างของไฟล์ตัวแปรสภาพแวดล้อม PATH ของคุณใน~/.profile file or ~/.bash_profileภายใต้ Bash หรือ~/.zshrcภายใต้ zsh

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

หรือ

alias python=python3

-Sixthly อินพุตsource ~/.bash_profileภายใต้ Bash หรือsource ~/.zshrcภายใต้ zsh

- เจ็ดออกจากเครื่อง

- ประการที่แปดเปิดเทอร์มินัลและอินพุตของpython -Vคุณมีแนวโน้มที่จะแสดง:

Python 3.7.2

ฉันลองทำสำเร็จแล้ว

อื่น ๆ ที่~/.bash_profileอยู่ภายใต้การ zsh ~/.bash_profileไม่ได้ว่า

สภาพแวดล้อม PATH ตัวแปรภายใต้ zsh แทน~/.profile(หรือ~/.bash_file) ~/.zshrcผ่าน

ช่วยพวกคุณ!


16

เปลี่ยน Python "default" โดยวางไว้ข้างหน้า Python ของระบบบนเส้นทางของคุณเช่น:

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

สมมติฐานของฉันคือการทำเช่นนี้คุณสามารถทำลายบางสิ่งบน Mac ได้ เนื่องจากมีโปรแกรมและสคริปต์จำนวนมากที่ใช้นามแฝง "python" หากทันใดนั้นเนื่องจากการเปลี่ยนแปลงลำดับความสำคัญใน PATH พวกเขาเริ่มชี้ไปที่ Python3 ไม่ใช่ Python2 ซึ่งอาจทำให้บางอย่างพังได้ อาจเป็นไปได้ว่าระบบปฏิบัติการทั้งหมด ... นั่นเป็นข้อสันนิษฐานของฉันแม้ว่าจะไม่ผ่านการทดสอบ
Aivoric

3
ซอฟต์แวร์ระบบใด ๆ จะใช้เส้นทางแบบเต็มไปยังระบบที่ Python ให้มา
Adam Vandenberg

2

จากการค้นหาโดย Google อย่างรวดเร็วการอัปเดตนี้ใช้กับเชลล์ปัจจุบันที่คุณเปิดไว้เท่านั้น อาจแก้ไขได้โดยพิมพ์ python3 เนื่องจาก mac และ linux มีความคล้ายคลึงกันมากพอที่สิ่งนี้จะตรงกัน ลิงก์ไปยังผลการค้นหาของ Google

ตามที่ Ninjagecko ระบุไว้โปรแกรมส่วนใหญ่ยังไม่ได้รับการอัปเดตเป็น 3.x ดังนั้นการมี python เริ่มต้นเป็น 3.x จะทำลายสคริปต์ python จำนวนมากที่ใช้ในแอปพลิเคชัน


2

ฉันใช้ OS X 10.7.5 และ Python 3.4.2 ถ้าคุณพิมพ์python3และสิ่งที่คุณต้องการที่จะทำงานมันจะทำงานได้โดยใช้หลาม 3 pyhton3 test001.pyตัวอย่างเช่น ที่รันโปรแกรมทดสอบที่ฉันเรียกว่า test001 ฉันหวังว่านี่จะช่วยได้.


5
ยินดีต้อนรับสู่ Stack Overflow! ดูเหมือนคำตอบของคุณจะไม่ใช่คำตอบที่แท้จริงสำหรับคำถามตามที่ถาม โปรดดูที่stackoverflow.com/help/how-to-answerเพื่อขอความช่วยเหลือหากคุณต้องการแก้ไข
อื่น ๆ

ฉันใช้เวลาหลายชั่วโมงในการพยายามทำให้ python3 ทำงานบน Mac ของฉัน - กลับกลายเป็นการพิมพ์ 'python3' แทน 'python' แบบเก่าทำเคล็ดลับ
YCode

1

นำทางไปยัง:

คอมพิวเตอร์ของฉัน -> คุณสมบัติ -> ขั้นสูง -> ตัวแปรสภาพแวดล้อม -> ตัวแปรของระบบ

สมมติว่าคุณได้เพิ่ม python 2.7 ในตัวแปรพา ธ แล้วและคุณต้องการเปลี่ยนเส้นทางเริ่มต้นเป็น python 3.x

จากนั้นเพิ่มเส้นทางของโฟลเดอร์ python3.5.x ก่อนพา ธ python2.7

เปิด cmd: พิมพ์ "python --version"

เวอร์ชัน python จะเปลี่ยนเป็น python 3.5.x


3
นั่นคือ Windows
charles ross

IDE บางรายการรวมถึงเทอร์มินัล / cmds / คอนโซลเผยแพร่ตัวแปรสภาพแวดล้อม รีสตาร์ท IDE เพื่อรับการเปลี่ยนแปลงภายในเทอร์มินัล embedd
UselesssCat

0
sudo mv /usr/bin/python /usr/bin/python2
sudo ln -s $(which python3) /usr/bin/python

สิ่งนี้จะทำลายสคริปต์ แต่เป็นวิธีการเปลี่ยน python คุณควรเขียนสคริปต์ใหม่เพื่อไม่ให้ถือว่าpythonเป็น 2.x วิธีนี้จะทำงานไม่ว่าคุณจะโทรไปที่ใดsystemหรือexec


0

กล่าวโดยย่อ: เปลี่ยนเส้นทางในตัวแปรสภาพแวดล้อม!

สำหรับ Windows:

  • System Settings > Advance (tab)สูง ด้านล่างคุณจะพบ'Environment Variables'

  • ดับเบิลคลิกที่ไฟล์Path. คุณจะเห็นเส้นทางไปยังการติดตั้ง python รายการใดรายการหนึ่งเปลี่ยนเป็นเส้นทางของเวอร์ชันที่คุณต้องการ


0

ตรวจสอบเส้นทางการดำเนินการของ python3 ที่มีไลบรารี

$ which python3
/usr/local/bin/python3  some OS might have /usr/bin/python3

เปิดไฟล์ bash_profile และเพิ่มนามแฝง

vi ~/.bash_profile  
alias python='/usr/local/bin/python3' or alias python='/usr/bin/python3'

โหลด bash_profile ใหม่เพื่อรับผลของการแก้ไข

source ~/.bash_profile

เรียกใช้คำสั่ง python และตรวจสอบว่ากำลังโหลดด้วย python3 หรือไม่

$ python --version
Python 3.6.5
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.