เปลี่ยนไปใช้ Virtual Environment สำหรับ Python กันดีกว่านะ

Withusiri Rodsomboon
InsightEra
Published in
2 min readMay 7, 2020
Photo by Hitesh Choudhary on Unsplash

สวัสดีครับผู้อ่านทุกคน กลับมาพบกันอีกครั้งนะครับ ในวันนี้ผมจะมาพูดถึงเรื่องหนึ่งที่คิดว่าค่อนข้างสำคัญสำหรับผู้ที่ใช้ Python ในการพัฒนา Project ต่างๆ

ซึ่งสิ่งที่ผมจะพูดถึงในวันนี้ก็คือ Virtual Environment หลายๆ คนน่าจะรู้จักว่าเจ้าสิ่งนี้มีหน้าที่ทำอะไร มีประโยชน์อย่างไรแต่สำหรับคนที่ไม่รู้ วันนี้ผมจะพาไปรู้จักกับเจ้าสิ่งนี้เองครับ

Global Environment คืออะไร

ตามปกติเวลาที่เราติดตั้ง Python บนเครื่องคอมพิวเตอร์ของเรา Python จะใช้สิ่งที่เรียกว่า Global Environment ซึ่งทำหน้าที่เก็บ Packages ต่างๆ ที่เราได้ทำการติดตั้งเอาไว้ ซึ่งสามารถใช้ได้กับทุกๆ Project หมายความว่า ถ้าเกิดเราพัฒนา Project ที่ชื่อ Project-1 แล้วมีการลง Library requests เอาไว้ หลังจากนั้นถ้าเราไปพัฒนา Project ใหม่ที่ชื่อว่า Project-2 แล้วมีความต้องการใช้ Packages requests เหมือนกัน เราก็ไม่จำเป็นต้องทำการติดตั้ง Library requests ใหม่อีก โดยสามารถใช้ร่วมกันได้เลย

แล้วทำไมถึงต้องมาใช้ Virtual Environment ?

จากที่อ่านข้างต้น Global Environment มันก็สวยงามดีนี่นา ทำไมเราถึงต้องไปใช้ Virtual Environment ด้วยนะ สาเหตุเป็นเพราะว่าในความเป็นจริง ถ้าเราทำหลาย Project มากขึ้น งานที่ต้องทำมันหลากหลายขึ้นกว่าเดิมเราจะค้นพบปัญหาที่ชวนปวดหัวเช่น Project-1 ต้องใช้ Library A ที่เป็น version 1.0 แต่ Project-2 ต้องใช้ Library A เหมือนกันแต่ต้องเป็น version 2.0 หรือในกรณีที่เราทำหลายๆ Project แล้วเราต้องการ Deploy Project ใด Project หนึ่งไปที่เครื่องอื่นๆ เราก็จะเกิดอาการสับสนเพราะว่าถ้าใน Global Environment ของเราลง Library ไว้มากมายมีโอกาสที่เราจะจำไม่ได้ว่า Project นี้ใช้ Library ตัวไหนบ้างทำให้เราต้องมานั่งไล่ดูใหม่ (ซึ่งเสียเวลามากกกกกกกกกกกกก) หรือไม่ก็ ต้องยอมขนไปทั้งหมด (ซึ่งก็ทำให้เปลืองทรัพยากรแบบเปล่าประโยชน์)

ในสถานการณ์แบบนี้เราเลยมีสิ่งที่เรียกว่า Virtual Environment ขึ้นมา ซึ่งเจ้าตัว Virtual Environment จะช่วยให้การจัดการ Library ต่างๆ สำหรับแต่ละ Project ง่ายยิ่งขึ้น กล่าวคือแต่ละ Project ก็จะมี Environment ของตัวมันเองในการจัดการ Library ต่างๆ ทำให้เราสามารถใช้ Library A ที่ต่าง version กันสำหรับ Project-1 และ Project-2 ได้อย่างสบายใจ หรือสามารถ Deploy Project ไปที่เครื่องอื่นง่ายขึ้นเพราะแต่ละ Project มี Environment ส่วนตัว การ list Library ของแต่ละ Project ออกมาก็จะไม่มีตัวที่เป็นส่วนเกินเข้ามาด้วยนั่นเองครับ

เริ่มต้นใช้งาน Virtual Environment

ก่อนจะไปถึงการติดตั้ง Virtual Environment เรามาเตรียมความพร้อมกันก่อน

  1. คอมพิวเตอร์ที่ใช้งาน Windows 10
  2. ทำการติดตั้ง Python 3.6.2 และทำการเพิ่ม Python เข้าไปที่ Windows Path ให้เรียบร้อย

โดยที่ในบทความนี้ผมจะใช้ Library virtualenv ในการสร้าง Virtual Environment นะครับ ถ้าพร้อมแล้วก็ไปเริ่มกันเลย

ขั้นตอนแรก : เปิด command prompt และทำการติดตั้ง Library virtualenv ผ่าน pip

pip install virtualenv

ขั้นตอนที่สอง : เมื่อทำการติดตั้ง virtualenv เสร็จแล้วก็ให้เราทำการสร้าง virtual enironment ที่ชื่อว่า medium_virtual_environment (หรือจะใช้ชื่อตามที่ผู้อ่านสะดวกก็ได้ครับ)

virtualenv medium_virtual_environment

ซึ่งจะเป็นการสั่งให้สร้าง Virtual Environment ที่ชื่อ medium_virtual_environment ขึ้นมาที่ directory ที่เรากำลังอยู่ ณ ตอนนี้ครับ ซึ่งผลลัพธ์ก็จะหน้าตาประมาณนี้

ผลลัพธ์หลังจากการสร้าง virtual environment ขึ้นมา

ในกรณีของผม Virtual Environment ก็จะถูกเก็บอยู่ที่ D:\medium_virtual_environment นั่นเองครับ

ใช้งาน Virtual Environment

ขั้นตอนการใช้งาน Virtual Environment นั้นไม่มีอะไรซับซ้อนครับ เราสามารถเปลี่ยนจากการใช้งาน Global Environment ไปเป็น Virtual Environment ได้โดยใช้คำสั่ง

path_to_virtual_environment\Scripts\activate

ในกรณีของผมก็จะเป็นดังนี้ครับ

เริ่มใช้งาน virtual environment

ซึ่งเมื่อเราทำการ Enter ก็จะเห็นสิ่งที่เพิ่มเข้ามาในทุกบรรทัด ในหน้า Command Prompt ของเรานั่นก็คือ

วงเล็บที่อยู่ด้านหน้าของแต่ละบรรทัด เป็นการบ่งบอกว่า ณ ตอนนี้เรากำลังใช้งาน virtual environment ตัวไหน

ถ้าเราตั้งชื่อ Virtual Environment ต่างออกไป ชื่อในวงเล็บข้างหน้าก็จะเปลี่ยนไปตามนั้นครับผม จากนี้เราก็สามารถติดตั้ง Library ต่างๆ ของ Python ได้เลย โดยที่ Library ต่างๆ ที่เราติดตั้งนั้นจะอยู่แค่ใน Virtual Environment นี้เท่านั้น

อยากเลิกใช้ Virtual Environment แล้วจะทำยังไง

ถ้าเราต้องการออกจากการใช้งาน Virtual Environment นี้ เพื่อที่จะกลับไปใช้งาน Global Environment หรือเพื่อไปใช้งาน Virtual Environment ตัวอื่นๆ เราสามารถทำได้โดยการใช้คำสั่ง

deactivate

ซึ่งจะเป็นการยกเลิกการใช้งาน Virtual Environment นั่นเองครับ

จริงๆ แล้วเจ้า Library virtualenv ยังสามารถช่วยให้เราใช้งาน Python version ที่ต่างกันได้ด้วยนะครับเช่น Project-1 ใช้ Python 3 ส่วน Project-2 ใช้ Python 2 จะเห็นได้ว่าเจ้า virtualenv นั้นไม่ได้มีประโยชน์แค่ในแง่มุมของการจัดการ Library เพียงอย่างเดียวเท่านั้นนะครับ

สำหรับวันนี้ขอจบบทความไว้เพียงเท่านี้ แล้วพบกันใหม่บทความหน้า สวัสดีครับ ❤

--

--