1. pyenv คืออะไร?
สำหรับนักพัฒนา Python มักจะพบว่ามีโปรเจกต์ต่าง ๆ ที่ต้องใช้เวอร์ชันของ Python ที่แตกต่างกัน ซึ่งในสถานการณ์นี้เครื่องมือที่มีประโยชน์คือ pyenv
เครื่องมือนี้ช่วยจัดการหลายเวอร์ชันของ Python และสามารถสลับเวอร์ชันได้อย่างง่ายดายตามแต่ละโปรเจกต์
ความท้าทายในการจัดการเวอร์ชัน Python
เมื่อพัฒนาด้วย Python ไปเรื่อย ๆ อาจจำเป็นต้องใช้หลายเวอร์ชันของ Python ในโปรเจกต์ที่ต่างกัน ตัวอย่างเช่น โปรเจกต์หนึ่งใช้ Python 3.9 แต่โปรเจกต์อื่นอาจต้องใช้ Python 2.7 โดยปกติแล้ว ระบบมักจะติดตั้ง Python เพียงเวอร์ชันเดียว การสลับเวอร์ชันจึงยุ่งยาก pyenv
ถูกออกแบบมาเพื่อแก้ปัญหานี้
ข้อดีของ pyenv
การใช้ pyenv
มีประโยชน์ดังนี้:
- สลับเวอร์ชันได้ง่าย: ด้วย
pyenv
ผู้ใช้สามารถสลับเวอร์ชันของ Python ได้ทั้งในระดับระบบทั้งหมดหรือเฉพาะโปรเจกต์ได้ง่าย ๆ - จัดการหลายเวอร์ชัน: สามารถจัดการหลายเวอร์ชันของ Python ที่ติดตั้งในระบบด้วยคำสั่งเดียว รองรับการทำงานกับ dependency และความแตกต่างของเวอร์ชันแต่ละโปรเจกต์ได้อย่างยืดหยุ่น
- รองรับหลายระบบปฏิบัติการ (ยกเว้น Windows): ใช้งานได้บน macOS และ Linux เป็นต้น
กลไกการทำงานของ pyenv
pyenv
จะสร้างไดเรกทอรีแยกสำหรับแต่ละเวอร์ชันของ Python และติดตั้ง Python ไว้ในแต่ละไดเรกทอรี จากนั้นผู้ใช้สามารถใช้คำสั่ง pyenv global
หรือ pyenv local
เพื่อกำหนดเวอร์ชันที่ต้องการใช้ทั้งระบบหรือเฉพาะโปรเจกต์

2. วิธีติดตั้ง pyenv
ภาพรวม
ในการใช้งาน pyenv
จำเป็นต้องติดตั้งลงในระบบก่อน ส่วนนี้จะอธิบายขั้นตอนการติดตั้งบน macOS และ Linux เนื่องจาก pyenv
ไม่รองรับ Windows โดยตรง จึงแนะนำให้ใช้วิธีอื่นเช่น WSL หรือ Anaconda แทน
การติดตั้งบน macOS
บน macOS สามารถติดตั้ง pyenv
ได้ง่าย ๆ ผ่าน Homebrew
ซึ่งเป็นเครื่องมือจัดการแพ็กเกจสำหรับ macOS ช่วยให้ติดตั้งซอฟต์แวร์ต่าง ๆ ได้สะดวก ทำตามขั้นตอนดังนี้:
- ตรวจสอบการติดตั้ง Homebrew
เปิด Terminal และรันคำสั่ง:
brew --version
หากมีการแสดงหมายเลขเวอร์ชัน แสดงว่ามีการติดตั้งแล้ว หากยังไม่ได้ติดตั้งให้ไปที่ เว็บไซต์ทางการ Homebrew
- ติดตั้ง pyenv
เมื่อมี Homebrew แล้ว ให้ติดตั้งpyenv
ด้วยคำสั่ง:
brew install pyenv
- ตั้งค่าตัวแปรสภาพแวดล้อม
เพิ่มค่าการตั้งค่าใน.bash_profile
หรือ.zshrc
:
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init --path)"' >> ~/.bash_profile
จากนั้นรีสตาร์ท Terminal หรือรัน:
source ~/.bash_profile
- ตรวจสอบการติดตั้ง
ทดสอบด้วยคำสั่ง:
pyenv --version
การติดตั้งบน Linux
บน Linux วิธีติดตั้งใกล้เคียงกับ macOS แต่จะใช้ apt
หรือ yum
แทน ตัวอย่างใน Ubuntu:
- ติดตั้งแพ็กเกจที่จำเป็น
sudo apt update
sudo apt install -y build-essential libssl-dev zlib1g-dev libbz2-dev
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev
xz-utils tk-dev libffi-dev liblzma-dev python-openssl git
- ติดตั้ง pyenv
ใช้ Git clone:
curl https://pyenv.run | bash
- ตั้งค่าตัวแปรสภาพแวดล้อม
เพิ่มลงใน.bashrc
หรือ.zshrc
:
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init --path)"
จากนั้นรีสตาร์ท Terminal หรือรัน source ~/.bashrc
- ตรวจสอบการติดตั้ง
pyenv --version
การแก้ปัญหาเบื้องต้น
หากเกิดข้อผิดพลาดระหว่างการติดตั้ง มักเกิดจาก library ที่ยังไม่ครบ โดยเฉพาะบน Linux อาจต้องติดตั้งเพิ่มตามคู่มืออย่างเป็นทางการ

3. การจัดการเวอร์ชัน Python
หลังจากติดตั้ง pyenv
แล้ว ขั้นตอนต่อไปคือการเรียนรู้วิธีจัดการเวอร์ชันของ Python ส่วนนี้จะอธิบายการติดตั้งและการสลับเวอร์ชัน
การติดตั้งเวอร์ชัน Python
pyenv
ช่วยให้ติดตั้งเวอร์ชันต่าง ๆ ของ Python ได้ง่าย ตัวอย่างเช่น หากโปรเจกต์ A ต้องใช้ Python 3.8 และโปรเจกต์ B ต้องใช้ Python 3.9 สามารถติดตั้งแยกกันได้ดังนี้:
- ตรวจสอบรายการเวอร์ชันที่มี
ใช้คำสั่ง:
pyenv install --list
คำสั่งนี้จะแสดงเวอร์ชัน Python ทั้งหมดที่สามารถติดตั้งได้
- ติดตั้งเวอร์ชันที่ต้องการ
เช่น:
pyenv install 3.9.1
การสลับเวอร์ชัน Python
pyenv
ช่วยให้สลับใช้งานหลายเวอร์ชันของ Python ได้อย่างง่ายดาย เหมาะสำหรับโปรเจกต์ที่ต้องใช้เวอร์ชันต่างกัน
- สลับเวอร์ชันทั้งระบบ
ใช้คำสั่ง:
pyenv global 3.9.1
คำสั่งนี้จะตั้งค่าให้ระบบทั้งหมดใช้ Python 3.9.1
- สลับเวอร์ชันเฉพาะโปรเจกต์
ใช้คำสั่ง:
pyenv local 3.8.0
คำสั่งนี้จะทำให้โฟลเดอร์ปัจจุบันใช้ Python 3.8.0 โดยไม่กระทบโฟลเดอร์อื่น
- ตรวจสอบเวอร์ชันที่ใช้งานอยู่
ใช้คำสั่ง:
pyenv version
คำสั่งนี้จะแสดงเวอร์ชัน Python ที่กำลังถูกใช้งาน
การถอนการติดตั้งเวอร์ชัน
หากไม่ต้องการเวอร์ชันใด ๆ อีก สามารถลบออกได้ด้วย:
pyenv uninstall 3.9.1
คำสั่งนี้จะลบ Python 3.9.1 ออกจากระบบ

4. การใช้งานร่วมกับ virtualenv
แม้ว่า pyenv
จะช่วยจัดการเวอร์ชันของ Python ได้ดี แต่หากต้องการแยกการพึ่งพา (dependencies) ของโปรเจกต์ให้เป็นอิสระ ควรใช้งานร่วมกับ virtualenv
(สภาพแวดล้อมเสมือน) ส่วนนี้จะอธิบายวิธีใช้งานร่วมกันและข้อดีที่ได้
virtualenv คืออะไร?
virtualenv
เป็นเครื่องมือที่ใช้สร้างสภาพแวดล้อมเสมือนสำหรับแต่ละโปรเจกต์ ทำให้สามารถแยกการพึ่งพาและแพ็กเกจต่าง ๆ ได้โดยไม่รบกวนกัน ตัวอย่างเช่น โปรเจกต์ A ใช้ requests
เวอร์ชัน 2.0 ขณะที่โปรเจกต์ B ใช้เวอร์ชัน 3.0 ทั้งสองโปรเจกต์สามารถทำงานร่วมกันได้โดยไม่มีปัญหา
ความแตกต่างระหว่าง pyenv และ virtualenv
– pyenv
: เน้นที่การจัดการเวอร์ชันของ Python
– virtualenv
: เน้นที่การจัดการแพ็กเกจและไลบรารี แยกตามโปรเจกต์
เมื่อใช้ร่วมกัน จะได้ข้อดีดังนี้:
- จัดการหลายเวอร์ชันของ Python: ใช้
pyenv
เพื่อติดตั้งและกำหนดเวอร์ชันที่เหมาะสมในแต่ละโปรเจกต์ - จัดการ dependencies แยกตามโปรเจกต์: ใช้
virtualenv
เพื่อป้องกันการชนกันของแพ็กเกจ
การติดตั้ง pyenv-virtualenv
สามารถติดตั้งปลั๊กอิน pyenv-virtualenv
เพื่อทำให้จัดการสภาพแวดล้อมได้ง่ายขึ้น:
- ติดตั้ง
บน macOS ใช้:
brew install pyenv-virtualenv
บน Linux ใช้:
git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
- ตั้งค่าตัวแปรสภาพแวดล้อม
เพิ่มบรรทัดนี้ในไฟล์.bash_profile
หรือ.zshrc
:
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
source ~/.bash_profile
การสร้างสภาพแวดล้อมเสมือน
ตัวอย่างการสร้าง virtualenv สำหรับ Python 3.8.0:
pyenv virtualenv 3.8.0 my_project_env
คำสั่งนี้จะสร้างสภาพแวดล้อมชื่อ my_project_env
การสลับสภาพแวดล้อม
ใช้คำสั่งนี้เพื่อเปิดใช้งานในโปรเจกต์:
pyenv local my_project_env
การลบสภาพแวดล้อม
หากไม่ต้องการใช้งานแล้ว สามารถลบได้ด้วย:
pyenv uninstall my_project_env
ข้อดีของ virtualenv
การใช้ pyenv
ร่วมกับ virtualenv
ทำให้สามารถแยกเวอร์ชัน Python และ dependencies ของแต่ละโปรเจกต์ได้อย่างอิสระ ลดปัญหาการชนกันของแพ็กเกจ และทำให้การพัฒนาเสถียรขึ้น

5. ข้อควรระวังในการใช้ pyenv
แม้ว่า pyenv
และ virtualenv
จะช่วยจัดการเวอร์ชันและสภาพแวดล้อมได้ดี แต่ก็มีจุดที่ควรระวังและปัญหาที่พบบ่อย ส่วนนี้จะอธิบายปัญหาที่มักเกิดขึ้นและวิธีแก้ไข
1. การรองรับบน Windows มีข้อจำกัด
pyenv
ถูกออกแบบมาสำหรับ macOS และ Linux โดยตรง บน Windows จึงมีข้อจำกัด วิธีแก้ไขที่ใช้ได้คือ:
- ใช้ WSL (Windows Subsystem for Linux): ติดตั้ง Linux บน Windows ผ่าน WSL แล้วจึงใช้งาน
pyenv
- ใช้ Anaconda: เป็นอีกทางเลือกในการจัดการหลายเวอร์ชันของ Python และสภาพแวดล้อมเสมือน
2. ขาด dependencies ที่จำเป็น
บน Linux หาก dependencies ไม่ครบ อาจเกิด error เช่น:
WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?
วิธีแก้ไข:
- ติดตั้งแพ็กเกจที่จำเป็น เช่น
libbz2-dev
,libssl-dev
แล้วลองติดตั้งใหม่อีกครั้ง
sudo apt-get install -y build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev
3. ความขัดแย้งกับ Python ที่มีอยู่เดิม
หากในระบบมี Python ที่ติดตั้งอยู่แล้ว อาจเกิดการชนกับที่ pyenv
จัดการ วิธีแก้คือ:
- ตรวจสอบไฟล์ตั้งค่าเช่น
.bashrc
หรือ.zshrc
ว่ามีบรรทัด:
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init --path)"
แล้วรีสตาร์ท Terminal หรือรัน source ~/.bashrc
4. การติดตั้งบางเวอร์ชันล้มเหลว
อาจเกิดขึ้นหากเครื่องขาด build tools หรือ library วิธีแก้คือ ติดตั้ง build-essential
, libssl-dev
เป็นต้น แล้วลองใหม่
5. กำหนดเวอร์ชันผิดพลาด
หากใส่หมายเลขเวอร์ชันไม่ถูกต้อง จะเกิด error ควรตรวจสอบเวอร์ชันที่มีด้วยคำสั่ง:
pyenv install --list
6. ความขัดแย้งของสภาพแวดล้อมเสมือน
หากมีหลาย virtualenv ที่ใช้ Python เวอร์ชันเดียวกัน อาจเกิดการชนกันของ dependencies วิธีแก้คือสร้าง virtualenv แยกสำหรับแต่ละโปรเจกต์เสมอ โดยใช้ virtualenv
หรือ pyenv-virtualenv
6. สรุปและขั้นตอนถัดไป
pyenv
เป็นเครื่องมือที่ทรงพลังและสะดวกสำหรับการจัดการเวอร์ชันของ Python โดยเฉพาะสำหรับนักพัฒนาที่ต้องใช้หลายเวอร์ชันในโปรเจกต์ต่าง ๆ การใช้ pyenv
ทำให้การสลับเวอร์ชันเป็นเรื่องง่าย และเมื่อใช้งานร่วมกับ virtualenv
ก็ช่วยให้จัดการ dependencies ของแต่ละโปรเจกต์ได้สะดวกและปลอดภัยมากขึ้น
สรุปข้อดีของ pyenv
- จัดการเวอร์ชันได้ง่าย: สลับหลายเวอร์ชันของ Python ได้ทั้งในระดับระบบและโปรเจกต์
- ใช้งานร่วมกับ virtualenv: ช่วยแยก dependencies ของแต่ละโปรเจกต์ได้อย่างอิสระ
- แก้ปัญหาได้ยืดหยุ่น: หากเกิด error หรือการชนกันของเวอร์ชัน สามารถปรับการตั้งค่าและแก้ไขได้ง่าย
ขั้นตอนถัดไป
- พัฒนา workflow ให้มีประสิทธิภาพมากขึ้น: หลังจากคุ้นเคยกับ
pyenv
แล้ว ลองใช้งานร่วมกับเครื่องมืออื่น เช่นpipenv
หรือpoetry
เพื่อจัดการ dependencies และการ setup โปรเจกต์ให้อัตโนมัติ - ขยายไปยังสภาพแวดล้อมอื่น: หากเป็นผู้ใช้ Windows ให้พิจารณา WSL หรือ Anaconda เพื่อรองรับการทำงานที่คล้าย Linux
- ทดลองกับโปรเจกต์จริง: ไม่เพียงแค่เรียนรู้เชิงทฤษฎี แต่ควรนำ
pyenv
ไปใช้จริงกับโปรเจกต์ เพื่อเห็นผลลัพธ์ในการแยกเวอร์ชันและจัดการสภาพแวดล้อม
目次 1 1. はじめに1.1 Pythonバージョン管理の重要性1.2 Ubuntuとpyenvの組み合わせの利点2 …