ถ้าต้องการให้ **venv ใช้เฉพาะในแต่ละโปรเจกต์ (per project)**
คำตอบคือ *แยก venv ตามโฟลเดอร์โปรเจกต์* ครับ — และนี่คือวิธีทำอย่างถูกต้องแบบมาตรฐานที่นักพัฒนาทั่วโลกใช้กัน
# ✅ โครงสร้างที่ถูกต้องของโปรเจกต์ + venv
ตัวอย่างโครงสร้างโปรเจกต์ 1 อัน:
myproject/
│
├─ venv/ ← virtual environment ของโปรเจกต์นี้เท่านั้น
│ ├─ Scripts/
│ ├─ Lib/
│ └─ ...
│
├─ app.py
├─ requirements.txt
└─ README.md
ทุกโปรเจกต์มี venv ของตัวเอง
ไม่ใช่แชร์ venv เดียวกันทั้งเครื่อง
⭐ วิธีทำ venv สำหรับโปรเจกต์ทีละขั้นตอน
1) สร้างโฟลเดอร์โปรเจกต์
```bash
mkdir myproject
cd myproject
```
2) สร้าง venv ในโฟลเดอร์โปรเจกต์
ใช้ Python Launcher เลือกเวอร์ชันที่ต้องการ เช่น 3.10:
```bash
py -3.10 -m venv venv
```
จะได้โฟลเดอร์ **venv/** อยู่ในโปรเจกต์นี้โดยเฉพาะ
3) เปิดใช้ environment ของโปรเจกต์นี้**
```bash
venv\Scripts\activate
```
จะเห็นหน้าตา prompt เป็น:
(venv) C:\myproject>
ตอนนี้ pip ที่ใช้ → เป็นของโปรเจกต์นี้เท่านั้น
Python ที่รัน → เป็นของโปรเจกต์นี้เท่านั้น
4) ติดตั้งแพ็กเกจของโปรเจกต์นี้**
เช่น:
```bash
pip install flask
```
แพ็กเกจทั้งหมดจะอยู่ใน venv ของโปรเจกต์นี้ ไม่ไปปนกับโปรเจกต์อื่น
5) ปิด environment เมื่อเลิกทำงาน**
```bash
deactivate
```
โปรเจกต์อื่นจะไม่โดนผลจาก venv นี้เด็ดขาด
# 🎯 ตัวอย่างจริง (ดีที่สุด)
## โปรเจกต์ A
```
projectA/
├─ venv/
├─ appA.py
```
```bash
cd projectA
py -3.10 -m venv venv
venv\Scripts\activate
pip install flask
deactivate
```
## โปรเจกต์ B
```
projectB/
├─ venv/
├─ appB.py
```
```bash
cd projectB
py -3.11 -m venv venv
venv\Scripts\activate
pip install fastapi
deactivate
```
✔ โปรเจกต์ A และ B แยกกัน
✔ ใช้คนละ Python version ได้
✔ ใช้คนละ package ได้
✔ ไม่มีวันชนกัน
🧠 สรุปแบบง่ายที่สุด
* **หนึ่งโปรเจกต์ = หนึ่ง venv**
* venv ต้องสร้าง “ภายใน” โฟลเดอร์โปรเจกต์
* เปิดใช้ (activate) เฉพาะตอนทำงานในโปรเจกต์นั้น
* ปิดโดย `deactivate` ตอนเลิกทำงาน
6)การสลับเวอร์ชั่นของ python
เช็คเวอร์ชั่นทั้งหมดที่มี:
ใช้ 3.10: py -3.10 -m venv venv
ใช้ 3.9: py -3.9 -m venv venv
.\venv\Scripts\activate
deactivate
7)คำสั่งสร้างสำหรับ requirements.txt
pip freeze > requirements.txt

ความคิดเห็น
แสดงความคิดเห็น