python สลับ version


pyenv เป็น version manager ช่วยให้เราสลับไปมาระหว่าง Python หลายเวอร์ชันได้ง่าย ๆ เป็นเครื่องมือที่ใช้ไม่ยาก ออกแบบมาให้ทำหน้าที่เดียว คือ จัดการ Python เวอร์ชันต่าง ๆ
ปัญหาที่เจอ
ไม่ว่าจะเป็นภาษาใดก็ตาม บางงานต้องใช้ Python 3.7 บางงานต้องใช้ Python 3.11 — pyenv ช่วยให้สลับเวอร์ชันได้ง่าย ๆ ได้ในเครื่องเดียว ไม่ยุ่งกับ Python ของระบบ โดยจะติดตั้ง Python แยกเพิ่ม ไม่เกี่ยวข้องกับ Python ที่ติดมากับเครื่อง
ติดตั้ง
จากตัวอย่างจะใช้ macos สำหรับ window อ่านเพิ่มใน office document
# MacOSbrew updatebrew install pyenv
ตั้งค่า shell
# Zshecho 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrcecho '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrcecho 'eval "$(pyenv init - zsh)"' >> ~/.zshrc
Restart ปิดแล้วเปิด shell ใหม่
exec "$SHELL"
เริ่มใช้งาน pyenv กัน
ลองจรวจสอบว่าเราติดตั้งสำเร็จแล้วหรือยังสามารถเรียกใช้คำสั่ง pyenv ตรวจสอบ version
pyenv --version
ตรวจสอบ shell path
command -v pyenvpyenv root
เรามี python version อะไรติดตั้งไว้แล้วบ้าง
pyenv versions
มี python version อะไรสามารถติดตั้งเพิ่มได้บ้าง
pyenv install --list
ติดตั้ง python version
pyenv install 3.13.2
ตอนนี้เราใช้ version อะไรอยู่
pyenv versionpython --version
สลับหรือเรียกใช้ python version ที่ต้องการ
pyenv global 3.13.2pyenv local 3.12.9
เมื่อใช้คำสั่ง pyenv local [version] จะสร้างไฟล์ชื่อ .python-version
ในโฟลเดอร์ ภายในไฟล์นี้จะระบุเวอร์ชันของ Python ที่ใช้งาน เช่น 3.12.9 ซึ่งทำให้ทุกครั้งที่เราเปิด shell และอยู่ในโฟลเดอร์นั้น (หรือโฟลเดอร์ย่อยของมัน) pyenv จะปรับให้ใช้ Python เวอร์ชันที่ระบุไว้ใน .python-version
โดยอัตโนมัติ
สร้าง virtual environment ใช้สำหรับงานนี้เท่านั้น มีแพ็กเกจแยกกันไม่ปนกับงานอื่นด้วย virtualenv
pyenv virtualenv 3.12.9 myenv1
ใช้งาน environment จากนั้นติดตั้ง packages ต่างๆ ได้เลย
pyenv local myenv1
# install pacakgepip install [packages]# list all packages that installedpip list# Output installed packages in requirements formatpip freeze > requirements.txt# or install from requirements filepip install -r requirements.txt
เรียกดู virtual environment ที่เราเคยสร้าง
pyenv virtualenvs
ลบ virtual environment ที่ไม่ใช้แล้ว
pyenv virtualenv-delete myenv1