6 Tools จัดการ Python Environment ที่ช่วยให้ใช้งานสะดวกขึ้น

20-ส.ค.-25

คัมภีร์เทพ IT

เมื่อ Python Projects ใหญ่ขึ้น การจัดการ Dependencies และ Version ของ Python อาจกลายเป็นเรื่องยุ่งยาก Tools ที่ช่วยจัดการ Environment จึงมีบทบาทสำคัญในการแยก Environment ของแต่ละ Projects ออกจากกัน และทำให้การ Develop เป็นไปอย่างราบรื่น ในบทความนี้ เราจะพาคุณไปรู้จักกับ 6 Tools จัดการ Python Environment ที่ช่วยให้ใช้งานสะดวกขึ้น

1. venv — Built-in Module ของ Python สำหรับสร้าง Virtual Environment

ตั้งแต่ Python ใน Version 3.3 เป็นต้นมา ได้มีการรวม venv Module เข้ามาเป็นส่วนหนึ่งของ Python โดย Module นี้จะช่วยให้สามารถสร้าง Virtual Environment ที่มีน้ำหนักเบาได้ โดยในแต่ละ Virtual Environment จะมีชุด Python Packages ที่แยกอิสระอยู่ใน site Directory ของตัวเอง

เนื่องจาก venv ถูกติดตั้งมาพร้อมกับ Python อยู่แล้ว เราจึงสามารถสร้าง Virtual Environment ได้อย่างง่ายดายโดยที่ไม่ต้องติดตั้งอะไรเพิ่มเติม และนี่ก็คือวิธีการสร้าง

โดยปกติแล้ว คำสั่ง Python หรือ pip ที่เรา Run จะใช้งาน Python ที่ติดตั้งอยู่ในระบบเป็นหลัก แต่เมื่อเรา "เปิดใช้งาน (Activate)" Virtual Environment แล้ว คำสั่งทั้งหมดจะถูกส่งไปยัง Environment นั้นโดยเฉพาะ

และนี่ก็คือ ตัวอย่างวิธีการเปิดใช้งาน Virtual Environment ที่สร้างโดยใช้ venv โดยให้แทนที่ <venv> ด้วย Path ของ Directory ที่เก็บ Virtual Environment นั้นไว้:

Source

เมื่อใช้งานเสร็จแล้ว สามารถใช้คำสั่ง deactivate เพื่อออกจาก Virtual Environment

หมายเหตุ: ตั้งแต่ Python Version 3.5 เป็นต้นมา venv ได้กลายเป็นวิธีที่ได้รับการแนะนำสำหรับสร้าง Virtual Environment ในภาษา Python

2. virtualenv — Tool สำหรับสร้าง Virtual Python Environments แบบแยกอิสระ

virtualenv เป็น Tool สำหรับสร้าง Python Environments ที่แยกออกจากระบบหลักอย่างสิ้นเชิง โดยมีข้อดีที่ดูจะเหนือกว่า venv Module ดังต่อไปนี้:

  • virtualenv ทำงานได้เร็วกว่า เนื่องจากไม่ต้องดาวน์โหลด pip, setuptools และ wheel ซ้ำ ๆ เพราะมีระบบ Cache ไว้ในเครื่อง
  • virtualenv มี Plugin Architecture ที่เปิดโอกาสให้สามารถปรับแต่งได้ตามต้องการ ขณะที่ venv จะค่อนข้างตายตัวในโครงสร้าง
  • virtualenv สามารถตรวจหา Python Interpreters ที่ติดตั้งไว้ในระบบโดยอัตโนมัติตาม Version Specifications ทำให้การสร้าง Environment ใน Versions ต่าง ๆ สามารถทำได้สะดวกขึ้น
  • virtualenv สามารถอัปเดตแยกจาก Python ได้ผ่าน pip ในขณะที่ venv จะอัปเดตตาม Version ของ Python เท่านั้น
  • virtualenv มี API ที่ครบถ้วนมากกว่า ซึ่งสามารถนำไปใช้ใน Python Programs เพื่อสร้างหรือจัดการ Python Environment ได้โดยตรง

วิธีติดตั้ง virtualenv ที่พบบ่อยที่สุดคือ การติดตั้งผ่าน pip (ส่วนวิธีการติดตั้งแบบอื่น ๆ สามารถดูได้จากที่นี่)

เมื่อติดตั้งแล้ว เราสามารถใช้คำสั่ง virtualenv ผ่าน Command Line Tool เพื่อจัดการ Python Environment ได้ทันที

virtualenv จะตรวจสอบ Python Interpreter ที่ใช้โดยอัตโนมัติ (ซึ่งปกติจะเป็น Interpreter เดียวกับที่ Run virtualenv แต่เราสามารถกำหนด Interpreter เองได้โดยใช้ Option -p)

เช่นเดียวกับ venv เราสามารถใช้คำสั่ง deactivate เพื่อออกจาก Virtual Environment

3. pipenv — Python Dev Workflow สำหรับมนุษย์

pipenv เป็นอีกหนึ่ง Tool สำหรับจัดการ Virtual Environment ของ Python โดยเป็น Tool ระดับ Advance ที่ผสานรวมเอาความสามารถของ pip, virtualenv และ requirements.txt เข้าไว้ด้วยกัน ซึ่งช่วยให้ขั้นตอนที่เคยต้องทำแบบ Manual หลายอย่างกลายเป็นอัตโนมัติ และยังเพิ่ม Features สำคัญ ๆ ในด้านความสามารถการทำซ้ำได้ (Reproducibility) และความปลอดภัย

และนี่ก็คือ Features หลัก ๆ ที่ทำให้ Pipenv มีความแตกต่าง:

  • ไม่ต้องใช้ pip และ virtualenv แยกกันอีกต่อไป
  • การจัดการไฟล์ requirements.txt ที่มี Package Hashes อาจสร้างปัญหาได้ pipenv จึงใช้ Pipfile และ Pipfile.lock เพื่อแยกส่วน Abstract Dependency Declarations ออกจากชุดที่ผ่านการ Test แล้วอย่างชัดเจน
  • เมื่อเริ่ม Project ใหม่และใช้คำสั่ง เช่น pipenv install requests ระบบจะทำสิ่งต่อไปนี้ให้โดยอัตโนมัติ: สร้าง Virtual Environment (ถ้ายังไม่มี), ติดตั้ง Package ที่กำหนด และ อัปเดตไฟล์ Pipfile และ Pipfile.lock

เราสามารถติดตั้ง pipenv ได้ผ่าน pip และหากต้องการติดตั้งด้วยวิธีอื่น สามารถดูได้จาก Documentation นี้

เมื่อได้ติดตั้ง pipenv แล้ว เราสามารถใช้มันเพื่อสร้างและจัดการกับ Python Environments ได้

คำสั่งด้านบน จะใช้สร้าง Virtual Environment ให้โดยอัตโนมัติหากยังไม่มี และ pipenv จะเก็บ Virtual Environments เหล่านี้ไว้ในตำแหน่งที่ถูก Default ไว้

เราสามารถติดตั้ง Dependency ได้ โดยใช้คำสั่ง pipenv install

เมื่อต้องการออกจาก Environment Shell ให้ใช้คำสั่ง exit

หมายเหตุ: หากต้องการศึกษาเพิ่มเติมเกี่ยวกับ pipenv ขอแนะนำให้อ่านบทความนี้จากเว็บไซต์ Real Python

4. pyenv — จัดการ Versions ของ Python ได้อย่างง่ายดาย

pyenv จะช่วยให้คุณสามารถสลับไปใช้งานระหว่าง Versions ต่าง ๆ ของ Python ได้อย่างง่ายดาย มันเป็น Tool ที่เรียบง่าย, ไม่รบกวนระบบ และเป็นไปตามแนวคิด UNIX ที่ว่า Tool หนึ่งก็ควรจะทำงานอย่างหนึ่งให้ดีไปเลย

นี่คือ วิธีติดตั้ง pyenv ที่มักใช้กันโดยทั่วไป

คุณสามารถดูวิธีติดตั้งแบบอื่น ๆ ได้จาก Documentation นี้

หมายเหตุ: จะต้องมีขั้นตอนเพิ่มเติมในการติดตั้ง Build-Dependencies จึงจะสามารถใช้ pyenv ได้อย่างสมบูรณ์

หากต้องการติดตั้ง Python ใน Version ใด Version หนึ่ง ให้ใช้คำสั่งนี้ ซึ่งจะติดตั้งไว้ภายใต้โฟลเดอร์ ~/.pyenv/versions

เมื่อเราติดตั้ง Python หลาย Versions ไว้แล้ว เราสามารถใช้คำสั่ง pyenv เพื่อกำหนดว่า Version นั้นที่จะใช้ทั่วทั้งระบบ หรือใช้ในแต่ละ Project ได้

pyenv ยังรองรับการสร้างและจัดการ Virtual Environment ของ Python ได้อีกด้วย หากต้องการสร้าง Environment ใหม่ ให้ใช้คำสั่งต่อไปนี้:

เพื่อเปิดใช้งาน Environment ที่สร้างไว้ ให้ใช้คำสั่ง:

เมื่อใช้งานเสร็จแล้ว สามารถออกจาก Environment ได้ด้วยคำสั่ง pyenv deactivate

5. Poetry — จัดการ Dependency และ Packaging ของ Python ได้อย่างมืออาชีพ

Poetry จะช่วยให้คุณสามารถประกาศ จัดการ และติดตั้ง Dependencies ของ Python Projects ได้อย่างเป็นระบบ พร้อมรับประกันว่าคุณจะได้สภาพแวดล้อมที่เหมาะสมในการทำงานในทุกที่

Poetry มาแทนที่ไฟล์ต่าง ๆ อย่าง setup.py, requirements.txt, setup.cfg, MANIFEST.in และ Pipfile ด้วยไฟล์ pyproject.toml เพียงไฟล์เดียว ซึ่งมีรูปแบบที่เข้าใจง่ายและจัดการได้สะดวกกว่า

Poetry ต้องการ Python 3.9 ขึ้นไป จึงถือว่าเป็น Tool ที่ค่อนข้างใหม่เมื่อเทียบกับตัวอื่น ๆ

นี่คือตัวอย่างการเริ่มต้นใช้งาน Poetry สำหรับ Projects ของคุณ:

หากต้องการเพิ่ม Packages เข้าไปในไฟล์ pyproject.toml ให้ใช้คำสั่ง poetry add:

ในการติดตั้ง Dependencies ที่ประกาศไว้ใน Project ของคุณ เพียง Run คำสั่ง install โดย Poetry จะสร้าง Virtual Environment ให้โดยอัตโนมัติ (หากยังไม่มี):

หากต้องการศึกษารายละเอียดเพิ่มเติมเกี่ยวกับการใช้งาน Poetry สามารถดูได้จาก Official Documentation นี้

6. Conda — ระบบจัดการ Environment ที่ไม่จำกัดแค่ภาษา Python

ด้วย conda คุณจะสามารถ Create, Export, List, Remove และ Update Environments ใน Versions ต่าง ๆ (รวมถึง Packages ต่าง ๆ) ของ Python ได้อย่างยืดหยุ่น

หากต้องการสร้าง Environment ใหม่ด้วย conda ให้ใช้คำสั่ง:

ในการเปิดใช้งาน Environment ให้ใช้คำสั่ง conda activate <my-env> ส่วนการปิดใช้งาน ให้ใช้คำสั่ง conda deactivate

ในการ ติดตั้ง/ถอนการติดตั้ง Packages ภายใน Conda Environment ให้ใช้คำสั่งต่อไปนี้:

ข้อดีอย่างหนึ่งของการใช้ Conda คือความสามารถในการแก้ไข Dependencies ที่ซับซ้อนของ Project ซึ่งอาจสร้างปัญหากับ Tools อื่น ๆ ได้ นอกจากนี้ Conda ยังสามารถจัดการ Environment สำหรับภาษา Programming อื่น ๆ ได้ จึงทำให้มันเป็น Tool ที่มีความยืดหยุ่นสูงมาก

สรุป

และนี่ก็เป็น 6 Tools จัดการ Python Environment ที่ช่วยให้ใช้งานสะดวกขึ้น หากคุณต้องการพัฒนา Python Projects อย่างมีประสิทธิภาพ, เป็นระบบ และลดปัญหาจุกจิกในระยะยาว การรู้จักและเลือกใช้ Tools เหล่านี้ให้เหมาะสมกับงานของคุณ ถือเป็นทักษะที่จำเป็นของ Developers ในยุคนี้

ที่มา: https://levelup.gitconnected.com/

 

 

รับตำแหน่งงานไอทีใหม่ๆ ด้วยบริการ IT Job Alert

 

อัพเดทบทความจากคนวงในสายไอทีทาง LINE ก่อนใคร
อย่าลืมแอดไลน์ @techstarth เป็นเพื่อนนะคะ

เพิ่มเพื่อน

 

บทความล่าสุด