แนะนำวิธีการใช้งาน Homebrew ร่วมกับ Pythonใน macOS
When Homebrew and Python become a good friend.
สำหรับ Mac user แล้ว การใช้งาน macOS ให้ลื่นไหลและเต็มประสิทธิภาพ นิยมติดตั้ง Package เสริมเพื่อใช้จัดการเป็น Package manager ซึ่งตัวที่นิยมใช้กันอย่างแพร่หลาย (เรียกได้ว่าแทบทุกเครื่อง) คือ Homebrew
ตอนนี้ไม่ได้เกี่ยวกับการใช้งาน Homebrew แต่อย่างใด แต่เป็นการแนะนำวิธีการใช้งาน Homebrew ร่วมกับ Python ในระบบปฏิบัติการ macOS โดยที่ไม่ต้องพึ่งพา Python package manager อย่าง Anaconda
Homebrew and Anaconda
Anaconda ถือเป็น Python package manger ที่เป็นที่นิยมมากสำหรับงาน Data scientist เพราะร่วม Libraries ที่จำเป็นในการใช้งานเอาไว้ทั้งหมดแล้ว ทำให้เหมาะกับการใช้งานในทุกระดับ ถ้าติดตั้ง Anaconda ใน Windows ที่ไม่จำเป็นต้องมี Package manager ย่อมไม่มีปัญหาอะไร แต่เมื่อมาเป็นระบบปฏิบัติ macOS Anaconda อาจไม่ใช่คำตอบ
การใช้งาน Anaconda ร่วมกับ Homebrew เป็นสิ่งที่ไม่ลงรอยกันเท่าไหร่ เพราะใน Terminal มีคำสั่งพื้นฐานของ Homebrew ติดตั้งอยู่ การใช้งา conda
เพื่อจัดการ Libraries อาจทำไม่ได้ หรือทำได้แต่ไม่สะดวก
มีวิธีการต่าง ๆ มากมาย ทั้งยังใช้ Anaconda อยู่ หรือเลิกใช้ Anaconda และหันไปใช้ Python package manager ค่ายอื่นแทน ซึ่งก็ขึ้นอยู่กับวิธีการ Setup ตอนนี้เลยขอเสนอเป็นอีกทางเลือก สำหรับการ Setup เพื่อให้ Homebrew และ Python ทำงานร่วมกันได้อย่างดี
Setup Homebrew
อันดับแรกต้องติดตั้ง Homebrew เพื่อเป็น Package manager ของเครื่องก่อน ซึ่งวิธีการติดตั้งสามารถทำได้ผ่าน Command line ใน Terminal
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
ให้ Copy command line ด้านบน ไปวางที่ Terminal แล้วกด Enter หลังจากนั้นทุกอย่างจะติดตั้งอย่างอัตโนมัติ ซึ่งใช้เวลาไม่นานมาก เมื่อติดตั้งเสร็จแล้วสามารถใช้คำสั่ง brew --help
เพื่อทดสอบการติดตั้งว่าสมบูรณ์ดีหรือไม่
เมื่อไม่ฟ้อง Error อะไรแล้ว สามารถติดตั้ง Python ต่อได้ แต่ก่อนการตั้งติด Python อยากแนะนำ Shell ที่อาจมีประโยชน์ในการใช้งาน Terminal เช่น การติดตั้ง Shell ใหม่อย่าง Oh-my-zsh เพื่อความสามารถให้กับการใช้งาน Terminal สามารถติดตั้งได้ด้วย Command line ด้านล่าง (เป็นการติดตั้งผ่าน Curl)
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
เมื่อติดตั้ง Oh-my-zsh แล้ว Terminal จะมีความสามารถเพิ่มเติมด้วยการติดตั้ง Plugins เสริมเข้าไป เช่น zsh-autosuggestions, zsh-syntax-highlighting ซึ่งการติดตั้งสามารถทำได้ด้วย Oh-my-zsh (ใน Link ด้านบนมีรายละเอียดบอกไว้) เมื่อติดตั้งเสร็จแล้ว ให้ Add plugins เพิ่มเข้าไปในไฟล์ ~/.zshrc
plugins=( [plugins...] zsh-syntax-highlighting)
หรือการติดตั้ง Theme ให้กับ Terminal ก็สามารถทำได้เช่นกัน (เหมือนรูปด้านล่าง) แต่อยากไม่ได้ลงรายละเอียดขั้นตอนในตอนนี้
Use Python
การติดตั้ง Python สามารถติดตั้งผ่าน brew install python
ได้ตามปกติ เมื่อติดตั้ง Python เสร็จ ในเครื่องจะได้ pip
ติดตั้งมาด้วย ซึ่ง pip
เอาไว้ใช้ติดตั้ง Libraries ใน Environment อีกที หลังจากการติดตั้งค่า Default ของ macOS จะเป็น Python version 2.x การเรียนใช้ Python 3.x ต้องใช้ Command python3
รวมถึง pip
ด้วยเช่นกันต้องใช้ pip3
ในการติดตั้ง Libraries ให้ Python version 3.x
เนื่องจากใช้งาน Python 3.x เป็นหลัก เพื่อความสะดวกในการเรียกใช้งานทั้ง python และ pip สามารถทำการเปลี่ยน Mapping command ได้ใน ~/.zshrc
โดยให้เพิ่ม Line alias
ในไฟล์ จากนั้นทำการ source ~/.zshrc
alias python="python3"
alias pip="pip3"
สิ่งที่ยังขาดไปคือ Package manager ที่นำมาใช้ทดแทน Anaconda ขอแนะนำเป็น virtualenv
ที่ใช้งานได้ง่ายสามารถจัดการ Libraries แยกได้ตาม Enviroment สามารถติดตั้งได้ด้วย pip install virtualenv
เมื่อติดตั้งเสร็จแล้ว ~/.zshrc
อาจยังไม่รู้จัก Command นี้ ให้ทำการ Add virtualenv
ใน ~/.zshrc
ก่อน
plugins=( [plugins...] virtualenv)
การใช้งาน Virtualenv เป็นการสร้าง Environment แยกออกจากกันอย่างชัดเจน เพื่อไม่ให้เกิดปัญหาเรื่อง Version ของ Libraies ที่อาจไม่ตรงกันในแต่ละ Project ตัวอย่างการใช้งาน สามารถดูได้จาก Steps ด้านล่าง
สร้าง Folder project ด้วย mkdir project-name
จากนั้น cd project-name
เมื่อเข้ามาใน Folder project-name
แล้ว สามารถสร้าง Virtual environment ได้ด้วย
virtualenv env-name
ทำการ Activate virtual environment ได้ด้วย
source env-name/bin/activate/
เมื่อ Activate แล้ว สามารถใช้ pip install libraries-name
เพื่อติดตั้ง Libraries ที่จำเป็นสำหรับ Project ที่กำลังทำงานอยู่ เมื่อใช้งานเสร็จแล้ว ให้ทำการ deactivate
เพื่อออกจาก Virtual environment หรือหากต้องการลบทั้ง Project สามารถ Command line ด้านล่าง
rm -r project-name/
Conclusion
ทั้งหมดนี้เป็นเพียงหนึ่งในหลายวิธีการ Setup python ให้ทำการร่วมกับ Homebrew ได้โดยไม่ต้องพึ่งพา Anaconda ข้อดีของวิธีการนี้คือ Libraries version จะไม่ซ้อนทับกันในแต่ละ Project หรือเมื่อทำ Libraries พัง ก็สามารถลบทั้ง Environment โดยไม่กระทบกับ Core หลักของเครื่อง ลองเอาไปปรับใช้กันดูได้