วิธีตั้งค่าเวอร์ชันเริ่มต้นของ Python เป็น 3.x บน OS X


329

ฉันใช้ Mountain Lion และรุ่น Python เริ่มต้นพื้นฐานคือ 2.7 ฉันดาวน์โหลด Python 3.3 และต้องการตั้งเป็นค่าเริ่มต้น

ขณะนี้:

$ python
    version 2.7.5
$ python3.3
    version 3.3

ฉันจะตั้งค่าอย่างไรเพื่อให้ทุกครั้งที่$ pythonเปิดใช้งาน 3.3



คุณสามารถจัดการเวอร์ชันของไพpyenvธ อนได้
Shin Kim

คำตอบ:


579

การเปลี่ยนเวอร์ชั่นของระบบปฏิบัติการที่เป็นค่าเริ่มต้นของ python อาจทำให้แอพพลิเคชั่นบางตัวที่ใช้ python2 แตกหักได้

อย่างไรก็ตามคุณสามารถนามแฝงคำสั่งในเชลล์ส่วนใหญ่เนื่องจากเชลล์เริ่มต้นใน macOS (ทุบตีใน 10.14 และต่ำกว่า; zsh ใน 10.15) แบ่งปันไวยากรณ์ที่คล้ายกัน คุณสามารถใส่ alias python = 'python3' ลงใน~/.profileแหล่งที่มา~/.profileของคุณ~/.bash_profileและ / หรือ~/.zsh_profileด้วยบรรทัดดังนี้:

[ -e ~/.profile ] && . ~/.profile

ด้วยวิธีนี้นามแฝงของคุณจะทำงานกับเชลล์ได้

ด้วยเหตุนี้คำสั่งนี้จะเรียกpython python3หากคุณต้องการเรียกใช้ python "ดั้งเดิม" (ที่อ้างถึงpython2 ) ในบางโอกาสคุณสามารถใช้command pythonซึ่งจะทำให้ชื่อแทนไม่ถูกแตะต้องและทำงานได้ในทุกเชลล์

หากคุณเปิดล่ามบ่อยขึ้น(ฉันทำ)คุณสามารถสร้างนามแฝงเพิ่มเติมเพื่อเพิ่มได้เช่น:

alias 2='python2'
alias 3='python3'

เคล็ดลับ: สำหรับสคริปต์แทนที่จะใช้ shebang เช่น:

#!/usr/bin/env python

ใช้:

#!/usr/bin/env python3

วิธีนี้ระบบจะใช้สำหรับการทำงาน python3 หลามexecutables


2
ไม่ควรใส่ ~ / .bash_profile แทน ~ / .bash_aliases
UnsettlingTrend

4
การวางalias python=python3และทำงานpythonในเทอร์มินัลของฉันบน osx el capitan ไม่ได้ผลสำหรับฉัน พยายามบันทึกทั้ง ~ / .bash_aliases และ ~ / .bash_profile
Haymaker87

43
@ Haymaker87 ทำงานsource ~/.bash_profileหลังจากแก้ไข~/.bash_profileไฟล์
Wei Lu

15
คุณสามารถทำเช่นเดียวกันกับ pip:alias pip='pip3.6'
stephen

@ surfer190 ที่จะทำให้เกิดปัญหาเมื่อทำงานกับ sudo ใช่ไหม
Santosh Kumar

141

คุณสามารถแก้ไขได้โดยการเชื่อมโยงสัญลักษณ์

unlink /usr/local/bin/python
ln -s /usr/local/bin/python3.3 /usr/local/bin/python

24
นี่เป็นคำตอบที่ถูกต้อง (นามแฝงนั้นดี แต่สามารถเข้าถึงได้โดย bash ซึ่ง จำกัด ที่คุณสามารถโทรหาได้) อย่างไรก็ตามฉันจะใช้unlinkแทนrmการลบ symlink (หากคุณเพิ่มเครื่องหมายทับต่อท้ายโดยไม่ตั้งใจrmคุณอาจได้ผลลัพธ์ที่ไม่ดี) หรือคุณสามารถทำสิ่งln -s -f ...ที่ควรเขียนทับ symlink ปัจจุบัน
แช้ด Befus

2
@ChadBefus ขอบคุณสำหรับการตอบกลับ ฉันเห็นด้วยกับความคิดเห็นของคุณ การยกเลิกการเชื่อมโยงนั้นปลอดภัยกว่า rm
Shin Kim

3
มันจะมีผลตามมาสำหรับสคริปต์ที่คาดว่าpythonจะเป็นpython2.7หรือไม่?
Anton Tarasenko

19
macOS:unlink: /usr/bin/python: Operation not permitted
MarksCode

4
@MarksCode พยายามเรียกใช้บรรทัดต้นฉบับที่สอง (เช่นln -s... กับ /local/ )
EliadL

42

เปิดไฟล์~ / .bash_profile

vi ~/.bash_profile

จากนั้นใส่นามแฝงดังนี้

alias python='python3'

ตอนนี้บันทึกไฟล์แล้วรัน~ / .bash_profileไฟล์

source ~/.bash_profile

ขอแสดงความยินดี !!! ตอนนี้คุณสามารถใช้ python3 โดยพิมพ์หลาม

python --version

Python 3.7.3


หากคุณพบว่าฉันทำเช่นนั้นแล้วปัญหาเดียวกันนี้ใช้กับ pip (เช่น pip --version ยังคงเป็น 2.7.x) ดังนั้นคุณจะต้องทำตามขั้นตอนเดียวกันสำหรับ pip3 vi ~ / .bash_profile, นามแฝง pip = 'pip3', แหล่งข้อมูล ~ / .bash_profile, pip
--version

ฉันจำเป็นต้องsource ~/.bash_profileเปิดใช้งานเทอร์มินัลทุกครั้งหรือไม่? มันเปลี่ยนเป็น python2 เมื่อฉันปิดและเปิดเทอร์มินัลอีกครั้ง
Ricky Aguilar

21

ไปที่ประเภทอาคาร:

alias python=python3.x

นี่จะเป็นการตั้งค่าเริ่มต้น python เป็น python3.x


1
สิ่งนี้ใช้ได้สำหรับฉัน แต่ใช้ "alias python = python3"
Discant

นี่จะเป็นการตั้งค่าเวอร์ชันหลามชั่วคราวสำหรับอินสแตนซ์ของเทอร์มินัลนั้น
Ashwin R


10

ฉันมาสายเล็กน้อยในเกมนี้ แต่ฉันคิดว่าฉันควรโพสต์คำตอบที่อัปเดตเนื่องจากฉันเพิ่งพบปัญหานี้ด้วยตัวเอง โปรดทราบว่านี่จะใช้กับการตั้งค่าบน Mac เท่านั้น (ฉันไม่ได้ทดลองกับ Windows หรือ Linux ใด ๆ )

วิธีที่ง่ายที่สุดที่จะได้รับการทำงานนี้คือการติดตั้งหลามผ่านเบียร์ หากคุณไม่ได้ติดตั้ง Brew คุณจะต้องทำก่อน เมื่อติดตั้งแล้วให้ทำสิ่งต่อไปนี้ที่เทอร์มินัล:

brew install python

สิ่งนี้จะติดตั้ง Python 3 หลังจากติดตั้งแล้วให้รัน:

ls -l /usr/local/bin/python*

คุณจะเห็นลิงค์ทั้งหมดที่สร้างขึ้นโดย Brew เพื่อติดตั้ง Python มันจะมีลักษณะดังนี้:

lrwxr-xr-x  1 username  admin  36 Oct  1 13:35 /usr/local/bin/python3@ -> ../Cellar/python/3.7.4_1/bin/python3
lrwxr-xr-x  1 username  admin  43 Oct  1 13:35 /usr/local/bin/python3-config@ -> ../Cellar/python/3.7.4_1/bin/python3-config
lrwxr-xr-x  1 username  admin  38 Oct  1 13:35 /usr/local/bin/python3.7@ -> ../Cellar/python/3.7.4_1/bin/python3.7
lrwxr-xr-x  1 username  admin  45 Oct  1 13:35 /usr/local/bin/python3.7-config@ -> ../Cellar/python/3.7.4_1/bin/python3.7-config
lrwxr-xr-x  1 username  admin  39 Oct  1 13:35 /usr/local/bin/python3.7m@ -> ../Cellar/python/3.7.4_1/bin/python3.7m
lrwxr-xr-x  1 username  admin  46 Oct  1 13:35 /usr/local/bin/python3.7m-config@ -> ../Cellar/python/3.7.4_1/bin/python3.7m-config

แถวแรกในตัวอย่างนี้แสดงpython3symlink หากต้องการตั้งเป็นpythonsymlink เริ่มต้นให้ทำดังนี้:

ln -s -f /usr/local/bin/python3 /usr/local/bin/python

เมื่อตั้งค่าแล้วคุณสามารถทำสิ่งต่อไปนี้

which python

และควรแสดง:

/usr/local/bin/python

คุณจะต้องโหลดเชลล์เทอร์มินัลปัจจุบันของคุณใหม่เพื่อใช้ symlink ใหม่ในเชลล์นั้นอย่างไรก็ตามเชลล์เซสชันที่เพิ่งเปิดใหม่ทั้งหมดจะ (ควร) ใช้มันโดยอัตโนมัติ หากต้องการทดสอบสิ่งนี้ให้เปิดเทอร์มินัลเชลล์ใหม่และเรียกใช้สิ่งต่อไปนี้:

python --version

ใช้งานได้ดี ( อ้างอิง )
Nepo Znat

9

ไปที่ 'แอปพลิเคชัน' ป้อนโฟลเดอร์ 'Python' ควรมีสคริปต์ทุบตีที่ชื่อว่า 'Update Shell Profile.command' หรือที่คล้ายกัน เรียกใช้สคริปต์นั้นและควรทำ

อัปเดต: ดูเหมือนคุณไม่ควรอัปเดต: จะเปลี่ยนรุ่นไพ ธ อนเริ่มต้นอย่างไร


8

สิ่งนี้ใช้ได้สำหรับฉัน ฉันเพิ่มนามแฝงและรีสตาร์ทเครื่อง :

alias python=/usr/local/bin/python3


3

ฉันไม่แน่ใจว่าสิ่งนี้มีอยู่ใน OS X หรือไม่ แต่บน linux ฉันจะใช้ประโยชน์จากmoduleคำสั่ง ดูที่นี่ดูที่นี่

ตั้งค่า modulefile อย่างถูกต้องจากนั้นเพิ่มสิ่งนี้ในไฟล์ rc ของคุณ (เช่น ~ / .bashrc):

module load python3.3

สิ่งนี้จะทำให้เส้นทางของคุณได้รับการสลับไปมาตามที่ต้องการเมื่อคุณเข้าสู่ระบบโดยไม่กระทบต่อค่าเริ่มต้นของระบบ


3

ฉันคิดว่าเมื่อคุณติดตั้ง python คำสั่งนี้จะส่งออกคำสั่งพา ธ ไปยังไฟล์ ~ / .bash_profile ของคุณ ดังนั้นหากคุณไม่ต้องการใช้ Python 2 อีกต่อไปคุณสามารถลบคำสั่งนั้นออกจากที่นั่นได้ นามแฝงตามที่ระบุไว้ข้างต้นยังเป็นวิธีที่ดีในการทำเช่นนั้น

นี่คือวิธีการลบการอ้างอิงจาก ~ / .bash_profile - vim ./.bash_profile - ลบการอ้างอิง (AKA บางสิ่งเช่น: export PATH = "/ Users / bla / anaconda: $ PATH") - บันทึกและออก - แหล่งที่มา / .bash_profile เพื่อบันทึกการเปลี่ยนแปลง


มันไม่เกิดขึ้น
co2f2e


2

วิธีที่ถูกและผิดในการตั้ง Python 3 เป็นค่าเริ่มต้นบน Mac

ในบทความนี้ผู้เขียนหารือสามวิธีในการตั้งค่าเริ่มต้นหลาม:

  1. ไม่ต้องทำอะไร
  2. สิ่งที่เราสามารถทำได้ (แต่ก็ไม่ควร)
  3. สิ่งที่เราควรทำ!

วิธีทั้งหมดนี้ใช้ได้ผล คุณตัดสินใจว่าจะดีกว่า


1

หากคุณใช้ a virtualenvwrapperคุณสามารถค้นหาโดยใช้which virtualenvwrapper.shจากนั้นเปิดใช้โดยใช้vimหรือโปรแกรมแก้ไขอื่น ๆ จากนั้นเปลี่ยนสิ่งต่อไปนี้

# Locate the global Python where virtualenvwrapper is installed.
if [ "${VIRTUALENVWRAPPER_PYTHON:-}" = "" ]
then
    VIRTUALENVWRAPPER_PYTHON="$(command \which python)"
fi

เปลี่ยนสายไปVIRTUALENVWRAPPER_PYTHON="$(command \which python)"VIRTUALENVWRAPPER_PYTHON="$(command \which python3)"


1

สำหรับฉันทางออกคือการใช้ PyCharm และการตั้งค่าเวอร์ชันหลามเริ่มต้นให้เป็นรุ่นที่ฉันต้องการใช้งาน

ติดตั้ง PyCharm และไปที่ไฟล์ ==> การตั้งค่าสำหรับโครงการใหม่จากนั้นเลือกล่ามที่คุณต้องการสำหรับโครงการของคุณในกรณีนี้ python 3.3



1

หากคุณใช้ macports นั่นเป็นวิธีที่ทำได้ง่ายกว่า:

วิ่ง:

port install python37

หลังจากติดตั้งตั้งค่าเริ่มต้น:

sudo port select --set python python37

sudo port select --set python3 python37

รีสตาร์ทหน้าต่าง cmd ของคุณเสร็จแล้ว


1

เอ่อ ... มันค่อนข้างเก่า แต่ก็ยังสมควรได้รับคำตอบที่ดี

และสิ่งที่ดีคือคุณไม่ต้องการสัมผัส Python เริ่มต้นบน Mac

ติดตั้ง Python เวอร์ชั่นใดก็ได้ที่คุณต้องการผ่าน Homebrew หรืออะไรก็ตามและใช้มันใน virtualenv Virtualenv มักจะถูกมองว่าเป็นสิ่งที่เหมือนอึ แต่ก็ยังดีกว่าที่จะเปลี่ยนรุ่นของระบบไพ ธ อน (macOS มีแนวโน้มที่จะปกป้องตัวเองจากการกระทำดังกล่าว) หรือผู้ใช้ทั่วไป ... อะไรก็ตาม เพียงลืมเกี่ยวกับ Python เริ่มต้น การใช้สนามเด็กเล่นเช่น venv เป็นสิ่งที่ระบบปฏิบัติการของคุณจะเป็นสิ่งที่ดีที่สุดขอบคุณมากที่สุด

ตัวอย่างเช่นกรณีการแจกจ่ายลีนุกซ์รุ่นใหม่จำนวนมากกำจัด Python2 ที่ติดตั้งเอาไว้แล้วทิ้งเหลือเพียง Python3 ในระบบเท่านั้น แต่ทุกครั้งที่คุณพยายามติดตั้งบางสิ่งที่เก่าด้วย python2 เป็นการพึ่งพา ... หวังว่าคุณจะเข้าใจในสิ่งที่ฉันหมายถึง นักพัฒนาที่ดีไม่สนใจ นักพัฒนาที่ดีสร้างสนามเด็กเล่นที่สะอาดด้วยเวอร์ชั่นหลามที่พวกเขาต้องการ


0

ผู้ใช้ Mac เพียงแค่เรียกใช้รหัสต่อไปนี้บนเทอร์มินัล

brew switch python 3.x.x

3.xxควรเป็นเวอร์ชั่นใหม่ของไพ ธ อน

การดำเนินการนี้จะอัปเดตลิงก์ของระบบทั้งหมด


0

คำแนะนำเกี่ยวกับ alias python ถึง python3 จะทำให้เกิดปัญหากับสภาพแวดล้อมเสมือนที่ตั้งค่าเวอร์ชันของ python (เช่น pyenv) ด้วย pyenv คุณสามารถตั้งค่าเวอร์ชันทั่วโลกได้เช่น:

pyenv global 3.8.2

จากนั้นในโครงการเฉพาะใด ๆ คุณสามารถสร้างไฟล์. python-version ซึ่งมี python version อยู่ภายใน:

pyenv local 2.7.1

นี่เป็นวิธีที่ดีที่สุดในการจัดการหลามหลายเวอร์ชันในระบบในความคิดของฉัน

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