How to การใช้งาน Python Virtual Environment (venv)

Virtual Environment (venv) เป็นสิ่งที่แทบทุกคนต้องเจอเมื่อเริ่มต้นศึกษา Python หลายคนอาจจะยังไม่รู้ว่ามันคืออะไร สำคัญและประโยชน์ยังไง หรือแม้แต่จะใช้มันตอนไหน ? ในบทความนี้เราจะมาทำความเข้าใจเกี่ยวกับตัว Virtual Environment ในภาษาไพธอน พร้อมทั้งโครงสร้างและการใช้งาน ครบ จบในบทความเดียว

Virtual Environment (venv) คืออะไร?

Virtual Environment คือ คอนเซ็ปต์ของภาษาไพธอนในการจำลองสภาพแวดดล้อมที่จำเป็นในการรันโปรเจคท์ เช่น dependencies (โดย dependencies นี้จะหมายถึง packages, libraries, หรือแม้แต่ตัว Python Interpreter เอง) โดยให้เรามองว่า venv คือกล่องคอนเทนเนอร์ ๆ หนึ่ง เวลาเราติดตั้งไลบรารี่หรือแพ็คเกจต่าง ๆ ด้วยคำสั่ง pip install [PACKAGE-OR-LIBRARY_NAME] อะไรแบบนี้ตัวแพ็คเกจหรือไลบรารี่ก็จะถูกติดตั้งลงในกล่องนี้แทนที่จะถูกติดตั้งแบบ global  นั่นหมายความว่าในแต่ละโปรเจคท์ที่เราสร้างก็จะมี venv ของใครของมัน

ทำไม venv ถึงสำคัญ?

เวลาเราแชร์โปรเจคท์หรือนำไป deploy ก็จะง่ายต่อการจัดการ ไม่เกิดปัญหา เช่น ไลบรารี่ไม่ตรงกัน พอรันในเครื่องตัวเองรันได้ แต่พอแชร์ไปให้เพื่อนหรือนำไป deploy แล้วเวอร์ชั่นของ package หรือ library ไม่ตรงกันหรือไม่ compatible กัน เป็นต้น พูดง่าย ๆ venv จะช่วยจัดการ environment ให้เราไม่ต้องปวดหัวในภายหลัง

สร้าง Virtual Environment

ก่อนที่จะสร้าง venv เราจำเป็นต้องสร้างโฟลเดอร์โปรเจคท์เราก่อนครับ จะสร้างไว้ใน Desktop หรือ Drive ไหนก็ได้ตามความเหมาะสมในการเก็บโปรเจคท์ จากนั้นให้เปิด Terminal (Mac/Linux) หรือ PowerShell/Command Prompt (Windows) ขึ้นมา

สร้าง venv (Windows)

macOS/Linux

Activate Virtual Environment

เมื่อสร้าง venv เสร็จแล้ว ก็ต้องมีการ activate venv เพื่อเรียกใช้งานนั่นเอง

Activate venv สำหรับ Windows

Activate venv สำหรับ macOS/Linux

เมื่อ activate สำเร็จจะได้

Windows

WinmacOS/Linux

เท่ากับว่าเราจะได้  (env) พร้อมใช้เรียบร้อย 

Deactivate Virtual Environment (ออกจาก venv)

เมื่อเรารู้วิธีการสร้างและ activate venv แล้ว ต่อมาก็ต้องรู้คำสั่งในการออกจาก venv หรือมักจะเรียกกันว่า  deactivate 

เพียงเท่านี้ก็เป็นการออกจาก virtual environment แล้ว (สังเกตว่าเครื่องหมายวงเล็บจะหายไป)

Leave a Reply

Your email address will not be published. Required fields are marked *

Translate »