ฉันจะใช้ Homebrew เพื่อติดตั้ง Python 2 และ 3 บน Mac ได้อย่างไร


146

ฉันต้องสามารถสลับไปมาระหว่าง Python 2 และ 3 ฉันจะใช้ Homebrew ได้อย่างไรเพราะฉันไม่ต้องการยุ่งกับเส้นทางและมีปัญหา ตอนนี้ฉันมี 2.7 ติดตั้งผ่าน Homebrew


คุณอาจต้องการเปลี่ยนคำถามเพื่อลบการอ้างอิง homebrew เนื่องจากไม่จำเป็นต้องทำตามเป้าหมายของคุณ (ดูคำตอบของฉันด้านล่างเช่นstackoverflow.com/a/49091638/2923369 )
Matt Schlobohm

คำตอบ:


288

ฉันจะใช้pyenvคุณสามารถติดตั้งได้:

$ brew install pyenv

ในการเปิดใช้งาน pyenv ใน Bash shell คุณต้องเรียกใช้:

$ eval "$(pyenv init -)"

ในการทำเช่นนี้โดยอัตโนมัติสำหรับ Bash เมื่อเริ่มต้นให้เพิ่มบรรทัด~/.bash_profileนั้นใน 1

การใช้งาน:

เมื่อคุณติดตั้ง pyenv และเปิดใช้งานแล้วคุณสามารถติดตั้งไพ ธ อนรุ่นต่าง ๆ แล้วเลือกอันที่คุณสามารถใช้ได้ ตัวอย่าง:

$ pyenv install 2.7.5

คุณสามารถตรวจสอบเวอร์ชั่นที่ติดตั้งด้วย:

$ pyenv versions

และคุณสามารถสลับระหว่างเวอร์ชันของไพ ธ อนได้ด้วยคำสั่ง:

$ pyenv global 3.3.1

นอกจากนี้คุณยังสามารถตั้งค่าเวอร์ชันหลามสำหรับไดเรกทอรีปัจจุบันด้วย:

$ pyenv local 3.5.2

คุณสามารถตรวจสอบได้ด้วยการวิ่งpython --version:

$ python --version
Python 3.5.2

1 Homebrew เคยสอนให้คุณทำสิ่งนี้เมื่อทำการติดตั้ง pyenv แต่ข้อความนั้นถูกลบออกไป สำหรับ Zsh และกระสุนอื่น ๆ ขั้นตอนที่แม่นยำอาจแตกต่างกัน


นี่คือทางออกที่ง่ายที่สุด ฉันใช้สิ่งนี้เพื่อสลับไปมาระหว่าง Python 3 และ 2.7.x
Naz Mir

3
หากฉันติดตั้ง python 2.7 ผ่านhomebrewแล้วฉันควรดูแลpyenvด้วยวิธีใดบ้าง? ฉันสามารถติดตั้ง python 2.7 ถึงpyenv อื่นได้หรือไม่
Drake Guan

3
ใช่คุณสามารถติดตั้ง python 2.7 อื่นผ่าน pyenv มันจะติดตั้งไพ ธ อนนั้นด้วย $ PYENV_ROOT / รุ่น หลาม 2.7 อื่น ๆ ที่ติดตั้งผ่าน homebrew อาจปรากฏเป็น "ระบบ" เมื่อคุณรัน "pyenv version"
moliware

5
ฉันต้องเพิ่มไฟล์eval "$(pyenv init -)". profile / .zshrc เพื่อให้ pyenv ทำงาน
Rohmer

5
@ilciavo คุณอาจต้องเพิ่มeval "$(pyenv init -)"~ / .bash_profile ของคุณ
Jojanzing

77

คุณสามารถติดตั้งทั้งสองเวอร์ชันได้ในเวลาเดียวกัน

สำหรับ Homebrew> = 1.5.0:

ตั้งแต่วันที่ 1 มีนาคม 2018 pythonสูตรจะอัปเกรดเป็น Python 3.x ในขณะที่python@2สูตรใหม่จะถูกเพิ่มสำหรับ Python 2.7 โดยเฉพาะ

ดูประกาศเปลี่ยนแปลงที่นี่หรือเอกสารขั้นสุดท้ายเกี่ยวกับการใช้ Homebrew สำหรับ Python ที่นี่สำหรับงูหลามที่นี่

สำหรับ Homebrew รุ่นเก่า:

สำหรับ Python 2.x:

brew install python

สำหรับ Python 3.x:

brew install python3

ตอนนี้คุณจะมีทั้งรุ่นที่ติดตั้งในเครื่องของคุณ เมื่อคุณต้องการใช้เวอร์ชัน 2 ให้ใช้pythonไฟล์ปฏิบัติการได้ เมื่อคุณต้องการใช้เวอร์ชัน 3 ให้ใช้python3ไฟล์ปฏิบัติการ


คำถามเกี่ยวกับการใช้งานทั้งสอง
meduz

ขอบคุณสำหรับการอัพเดท! ฉันไปตามเส้นทางที่คล้ายกัน แต่มีปัญหาเกี่ยวกับการตั้งค่าPYTHONPATHในแต่ละการเปลี่ยนแปลง ... ความคิดใด ๆ นอกจากนั้นpyenvดีมาก
meduz

9
นอกจากนี้โปรดทราบว่าการมี python2 และ python3 เคียงข้างกัน python นั้นชี้ไปที่ python2 และ python3 ชี้ไปที่ python3 ตามที่คาดไว้ อย่างไรก็ตาม gotcha ขนาดใหญ่คือ pip ไม่ได้ชี้ไปที่ pip2 อย่างที่คุณคาดไว้ มันชี้ไปที่ pip3 (เช่นเดียวกับ pip3) หากต้องการใช้ pip2 ให้ใช้ pip2 อย่างชัดเจน ไม่สอดคล้องบิตมีคำต่อท้ายที่ไม่ใช่จำนวนจุดหลาม 2 แต่ต่อท้ายจำนวนไม่ใช่สำหรับจุด pip ถึง 3
JD

5
สิ่งนี้ทำให้ไฟล์โปรแกรมทั่วไปเหมือน pip python3 จะเขียนทับ python2 pip ในกรณีนี้และนั่นจะเป็นคำสั่ง "pip" เริ่มต้น
kissgyorgy

1
ในการตอบสนองต่อความคิดเห็น @ kissgyorgy ของ: ผมมีปัญหาที่ความคิดเห็นล่าสุดเมื่อวันที่แก้ไขปัญหานี้ให้ฉันgithub.com/Homebrew/legacy-homebrew/issues/50607วิ่งpython3 -m pip install -U --force-reinstall pipแล้วpython -m pip install -U --force-reinstall pipสิ่งที่นำกลับมาจะมีการpipอ้างถึงงูหลาม pip2
แฮร์รี่

11

Homebrew ปัจจุบันมีสองสูตรที่แตกต่างกันสำหรับ Python 2 และ 3 brew install pythonติดตั้ง python3 และbrew install python@2ติดตั้ง python2 รายละเอียดเพิ่มเติมในเอกสาร Homebrew:

https://docs.brew.sh/Homebrew-and-Python

หากปัจจุบันคุณติดตั้ง 2.x ผ่าน Homebrew Homebrew จะให้ข้อความเช่น:

Error: python 2.7.14 is already installed
To upgrade to 3.6.5, run `brew upgrade python`

หากคุณทำงาน:

brew upgrade python

คุณควรจะทำ:

python --version

และ

python3 --version

เพื่อดูว่า Python 2.x และ 3.x รุ่นใดติดตั้งอยู่


6

หรือคุณอาจป้อน "python3" เพื่อเรียกใช้ python3.x รุ่นล่าสุดและ "python" หรือ "python2" เพื่อเรียกใช้รุ่น 2.x ที่ติดตั้งล่าสุด


4

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

ขั้นตอนที่ 1:

ลบงูเหลือมทั้งหมดออกจาก mac ของคุณ

 brew uninstall --ignore-dependencies --force python
 sudo rm -rf ~/miniconda3/
 sudo rm -rf ~/.conda/

ลบสิ่งต่อไปนี้ออกจาก ~/.bash_profile

export PATH="/Users/ishandutta2007/miniconda3/bin:$PATH"

และยังจาก ~/.bashrc

export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH
export PYTHONPATH=/usr/local/lib/python2.7/site-packages/google:$PYTHONPATH
alias python="/usr/bin/python"

ขั้นตอนที่ 2 :

ติดตั้ง pyenv และ python เวอร์ชั่นที่คุณต้องการ

brew update
brew install pyenv
pyenv install 2.7
pyenv install 3.7.0

ขั้นตอนที่ 3 :

เพิ่มpyenv initไปbash_profileหรือbashrc

echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bash_profile

ขั้นตอนที่ 4 :

ตรวจสอบสิ่งที่ได้รับการติดตั้ง

pyenv versions
  • ระบบ (กำหนดโดย /Users/ishandutta2007/.pyenv/version)

    2.7

    3.7.0

Step5:

เลือกค่าเริ่มต้น

pyenv global 3.7.0

เมื่อโครงการต้องการเวอร์ชั่นที่เก่ากว่าเพียงไปที่รูทโฟลเดอร์และเรียกใช้

pyenv local 2.7

1

ใช้asdf !

บทกวีของ asdf

กาลครั้งหนึ่งมีภาษาการเขียนโปรแกรม
มีอยู่หลายเวอร์ชั่น
ดังนั้นผู้คนจึงเขียนตัวจัดการเวอร์ชันสำหรับมัน
เพื่อสลับระหว่างเวอร์ชันสำหรับโครงการ
ต่าง ๆ เก่าใหม่

จากนั้นมีภาษาการเขียนโปรแกรมมากขึ้น
ดังนั้นจึงมีผู้จัดการเวอร์ชันเพิ่มเติมมา
และมีคำสั่งมากมายสำหรับพวกเขา

ฉันติดตั้งมากพวกเขา
เรียนรู้คำสั่งมากมาย

จากนั้นฉันก็บอกผู้จัดการเวอร์ชั่นอีกหนึ่ง
ซึ่งฉันจะเขียนแทน

ดังนั้นจึงมีตัวจัดการเวอร์ชันอื่นมาเป็นตัวจัดการ
เวอร์ชัน asdf - https://github.com/asdf-vm/asdf

เครื่องมือจัดการเวอร์ชันที่สามารถขยายได้
ซึ่งทุกคนสามารถสร้างปลั๊กอิน
เพื่อสนับสนุนภาษาโปรดของพวกเขา
ไม่ต้องติดตั้งเครื่องมือจัดการเวอร์ชันเพิ่มเติม
หรือเรียนรู้คำสั่งเพิ่มเติม

https://github.com/asdf-vm/asdf
https://github.com/tuvistavie/asdf-python
https://github.com/asdf-vm/asdf-plugins


ดูเหมือนว่าสิ่งเหล่านี้ไม่ใช่เครื่องมือของคู่แข่ง แต่เป็นเครื่องมือเดียวกันซึ่งมีการใช้งานหนึ่งครั้ง (และบางครั้งมากกว่าหนึ่งครั้ง) ต่อภาษา ทำไมเราต้องการบางอย่างเช่น LSP ด้วย IMHO microsoft.github.io/language-server-protocol/overview
Matt Schlobohm

1

ฉันคิดว่าฉันมีความต้องการเหมือนกัน - ที่จะย้ายระหว่างรุ่นหลาม - แต่ฉันทำได้ฉันทั้งหมดที่จำเป็นมีเพียง Python3.6 homebrewโดยการสร้างจากแหล่งแทนการใช้

git clone https://git.<theThingYouWantToInstall>

ตรวจสอบว่ามีไฟล์ MAKE ที่ตั้งค่าไว้สำหรับตัวเลือกนี้หรือไม่



-3

โอเคฉันกำลังดิ้นรนกับการติดตั้งชงของ Python3 ของฉันเพราะฉันไม่มี pip3

sudo pip3 command not found

และฉันก็ทำเช่นนั้น

brew uninstall --force --ignore-dependencies python3

และติดตั้ง Python 3.6.2 ปกติจากการกระจายอย่างเป็นทางการแล้วฉันมี pip3 และส่วนประกอบทั้งหมดก็โอเค


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