เข้าไปใน Project folder
Run คำสั่ง python -m venv .venv เพื่อสร้าง VENV ใน project folder ของเรา
# 1. สร้างโฟลเดอร์โปรเจกต์ mkdir my-project cd my-project # 2. สร้าง venv ขึ้นมาในนั้น python -m venv .venv

Activate VENV โดยรันคำสั่งที่อยู่ใน .venv folder
.venv\Scripts\activate
แค่นั้น VENV ก็ทำงานแล้ว โดยดูได้จาก (venv) ที่แสดงขึ้นมาบน cmd prompt

หลังจากนั้นการทำงานจะทำงานภายใน .venv เท่านั้น เช่นการติดตั้ง library เพื่อใช้งานภายใน project ปัจจุบัน


Python venv คืออะไร?
venv (Virtual Environment) คือเครื่องมือมาตรฐานของ Python ที่ใช้สำหรับสร้าง “สภาพแวดล้อมเสมือน” ที่แยกตัวเป็นอิสระ (Isolated Environment) สำหรับโปรเจกต์ Python แต่ละโปรเจกต์
เปรียบเทียบง่ายๆ: ลองจินตนาการว่าคุณมีโปรเจกต์ 2 โปรเจกต์:
- โปรเจกต์ A: เป็นเว็บแอปเก่าที่ต้องใช้ไลบรารี
requestsเวอร์ชั่น 2.20 - โปรเจกต์ B: เป็นโปรเจกต์ Data Science ใหม่ล่าสุดที่ต้องใช้
requestsเวอร์ชั่น 2.31 ซึ่งมีฟีเจอร์ใหม่ๆ
ถ้าคุณติดตั้งไลบรารีทั้งหมดลงในคอมพิวเตอร์โดยตรง (Global Installation) คุณจะเจอปัญหาทันที เพราะคุณสามารถมี requests ได้แค่เวอร์ชั่นเดียวเท่านั้น การอัปเดตเพื่อโปรเจกต์ B จะทำให้โปรเจกต์ A พัง และการลดเวอร์ชั่นเพื่อโปรเจกต์ A ก็จะทำให้โปรเจกต์ B ใช้งานไม่ได้
venv เข้ามาแก้ปัญหานี้โดยการสร้าง “กล่องเครื่องมือ” แยกสำหรับแต่ละโปรเจกต์ โปรเจกต์ A จะมีกล่องของตัวเองที่บรรจุ requests v2.20 ส่วนโปรเจกต์ B ก็จะมีกล่องอีกใบที่บรรจุ requests v2.31 ทำให้ทั้งสองโปรเจกต์ทำงานได้พร้อมกันในคอมพิวเตอร์เครื่องเดียวโดยไม่มีปัญหากระทบกัน
หลักการทำงานเป็นอย่างไร?
venv ไม่ได้ซับซ้อนอย่างที่คิด หลักการทำงานของมันคือ:
- การสร้าง (Creation): เมื่อคุณรันคำสั่ง
python -m venv myenv- มันจะสร้างโฟลเดอร์ใหม่ขึ้นมา (ในที่นี้คือ
myenv) - ภายในโฟลเดอร์นั้น มันจะทำการ คัดลอก (หรือสร้าง Symbolic Link) ของตัวแปรภาษา Python (Python Interpreter) ที่คุณใช้รันคำสั่งนี้มาไว้
- มันจะสร้างโครงสร้างไดเรกทอรีที่จำเป็น เช่น
Scripts(สำหรับ Windows) หรือbin(สำหรับ macOS/Linux) และLib/site-packages - ที่สำคัญที่สุดคือ
Lib/site-packagesที่สร้างขึ้นมาใหม่นี้จะ ว่างเปล่า มันคือที่ที่จะใช้เก็บไลบรารีสำหรับโปรเจกต์นี้โดยเฉพาะ
- มันจะสร้างโฟลเดอร์ใหม่ขึ้นมา (ในที่นี้คือ
- การเปิดใช้งาน (Activation): เมื่อคุณรันสคริปต์
activate(เช่นmyenv\Scripts\activateบน Windows)- สคริปต์นี้จะทำการ แก้ไขตัวแปรระบบ (Environment Variable) ที่ชื่อว่า
PATHของหน้าต่าง Command Prompt/Terminal ที่คุณใช้งานอยู่ ชั่วคราว - มันจะชี้ให้
PATHค้นหาโปรแกรมต่างๆ (เช่นpython,pip) จากโฟลเดอร์myenv/Scripts(หรือmyenv/bin) ก่อน ที่จะไปหาจากที่อื่นในระบบ - ดังนั้น เมื่อคุณพิมพ์
pip install requestsมันจะเรียกใช้pipที่อยู่ในvenvและติดตั้งrequestsลงในmyenv/Lib/site-packagesไม่ใช่ที่ติดตั้งหลักของ Python ในเครื่องคอมพิวเตอร์ของคุณ - คุณจะสังเกตเห็นว่าหน้า Command Prompt มี
(myenv)นำหน้า เพื่อบอกว่าคุณกำลังทำงานอยู่ในสภาพแวดล้อมเสมือนนี้
- สคริปต์นี้จะทำการ แก้ไขตัวแปรระบบ (Environment Variable) ที่ชื่อว่า
- การปิดใช้งาน (Deactivation): เมื่อคุณพิมพ์คำสั่ง
deactivate- มันจะทำการคืนค่า
PATHกลับไปเป็นเหมือนเดิมก่อนที่คุณจะ Activate ทำให้ทุกอย่างกลับสู่สภาวะปกติ
- มันจะทำการคืนค่า
ควรใช้งานในลักษณะไหน? (Best Practices)
นี่คือขั้นตอนและแนวทางปฏิบัติที่ดีที่สุด:
- หนึ่งโปรเจกต์ต่อหนึ่ง venv: กฎเหล็กคือ ทุกครั้งที่เริ่มโปรเจกต์ใหม่ ให้สร้าง
venvใหม่สำหรับโปรเจกต์นั้นเสมอ - สร้าง venv ไว้ในโฟลเดอร์โปรเจกต์: เพื่อให้ง่ายต่อการจัดการ โดยมักจะตั้งชื่อว่า
venv,.venv
Bash# 1. สร้างโฟลเดอร์โปรเจกต์mkdir my-projectcd my-project# 2. สร้าง venv ขึ้นมาในนั้นpython -m venv .venv - Activate venv ก่อนเริ่มทำงานเสมอ:
- Windows:
DOS.venv\Scripts\activate - macOS/Linux:
Bashsource .venv/bin/activate
- Windows:
- ติดตั้งไลบรารีที่ต้องการ:
Bashpip install flask numpy pandas - สร้างไฟล์ requirements.txt: ไฟล์นี้เปรียบเสมือน “ใบสั่งของ” ที่บอกว่าโปรเจกต์ของคุณต้องใช้ไลบรารีอะไรบ้าง และเวอร์ชั่นไหน เป็นสิ่งที่สำคัญมากสำหรับการทำงานร่วมกับผู้อื่นและการ Deploy
Bashpip freeze > requirements.txt
ไฟล์requirements.txtจะมีหน้าตาประมาณนี้:flask==2.3.3numpy==1.26.0pandas==2.1.1... - เพิ่ม venv ลงใน
.gitignore: คุณ ไม่ควร นำโฟลเดอร์venvเข้าไปใน Git หรือส่งต่อไปให้คนอื่น เพราะมันมีขนาดใหญ่และอาจมีไฟล์ที่ผูกกับระบบปฏิบัติการของคุณโดยเฉพาะ ให้เพิ่มชื่อโฟลเดอร์venvของคุณลงในไฟล์.gitignore# .gitignore.venv/