Virtual environments เป็นรากฐานของการจัดการ dependency ใน Python คู่มือนี้ครอบคลุมเครื่องมือหลัก 4 อย่าง: venv, conda, pipenv และ Poetry
ทำไม Virtual Environments ถึงสำคัญ
โปรเจกต์ Python แต่ละโปรเจกต์มี dependency ของตัวเองพร้อมข้อกำหนดเวอร์ชันเฉพาะ Virtual environments แก้ปัญหานี้ด้วยการสร้าง Python installation ที่แยกออกต่อโปรเจกต์
venv: Standard Library ในตัว
venv รวมอยู่กับ Python 3.3+ และเป็นตัวเลือกที่ง่ายที่สุด
# venv — Built-in (Python 3.3+)
# Create a virtual environment
python -m venv .venv
# Activate (macOS/Linux)
source .venv/bin/activate
# Activate (Windows)
.venv\Scripts\activate
# Install packages
pip install django requests
# Save dependencies
pip freeze > requirements.txt
# Install from requirements.txt
pip install -r requirements.txt
# Deactivate
deactivate
# Delete the environment
rm -rf .venv
# Recommended: add .venv to .gitignore
echo ".venv" >> .gitignorePoetry: การจัดการ Dependency สมัยใหม่
Poetry เป็น Python dependency manager ที่ทันสมัยและมีคุณสมบัติครบถ้วนที่สุด
# Poetry — Modern Dependency Management (Recommended 2026)
# Install Poetry
curl -sSL https://install.python-poetry.org | python3 -
# Create a new project
poetry new my-project
cd my-project
# Add dependencies
poetry add django
poetry add --group dev pytest black ruff
# Install all dependencies (from poetry.lock)
poetry install
# Run commands in the virtual environment
poetry run python manage.py runserver
poetry run pytest
# Open a shell in the virtual environment
poetry shell
# Update dependencies
poetry update
# Export to requirements.txt (for compatibility)
poetry export -f requirements.txt --output requirements.txt
# Build and publish a package
poetry build
poetry publish
# Show dependency tree
poetry show --tree
# pyproject.toml (auto-generated)
# [tool.poetry]
# name = "my-project"
# version = "0.1.0"
# description = ""
# [tool.poetry.dependencies]
# python = "^>=3.11"
# django = "^>=5.0"
# [tool.poetry.group.dev.dependencies]
# pytest = "^>=8.0"conda: พลังสำหรับ Data Science
conda ไม่ใช่แค่เครื่องมือ virtual environment แต่เป็น package manager ที่สมบูรณ์
# conda — Data Science / ML (Anaconda/Miniconda)
# Install Miniconda (minimal)
# https://docs.conda.io/projects/miniconda/
# Create environment with specific Python version
conda create -n myproject python=3.11
# Activate environment
conda activate myproject
# Install packages (conda packages first)
conda install numpy pandas scikit-learn matplotlib
# Install packages not in conda
pip install some-pytorch-extension
# Export environment
conda env export > environment.yml
# Create from environment.yml
conda env create -f environment.yml
# List environments
conda env list
# Deactivate
conda deactivate
# Remove environment
conda env remove -n myproject
# Update conda
conda update conda
# environment.yml example:
# name: myproject
# channels:
# - conda-forge
# - defaults
# dependencies:
# - python=3.11
# - numpy=1.26
# - pandas=2.1
# - pip:
# - custom-package==1.0การเปรียบเทียบเครื่องมือ
การเลือกเครื่องมือที่เหมาะสมขึ้นอยู่กับกรณีการใช้งาน
Tool Installation Lockfile Non-Python Build/Publish Best For
------------------------------------------------------------------------
venv Built-in No No No Simple scripts, learning
pipenv pip install Yes No No Legacy projects
Poetry curl install Yes No Yes General apps, libraries
conda Installer Yes Yes No Data science, ML, AI
uv cargo/pip Yes No Yes Fast pip replacement (2026)คำถามที่พบบ่อย
ควรใช้เครื่องมือ virtual environment ไหนในปี 2026?
สำหรับการพัฒนา Python ทั่วไปและ web apps ใช้ Poetry สำหรับ data science และ ML ใช้ conda
ความแตกต่างระหว่าง pip และ conda คืออะไร?
pip ติดตั้งเฉพาะ Python packages จาก PyPI conda สามารถติดตั้ง packages ที่ไม่ใช่ Python ได้ด้วย
ฉันสามารถใช้ pip ใน conda environment ได้หรือไม่?
ได้ แต่ต้องระวัง การผสม pip และ conda อาจทำให้เกิดความขัดแย้ง
จะแชร์ environment กับ developer คนอื่นได้อย่างไร?
ด้วย Poetry: commit pyproject.toml และ poetry.lock ด้วย pip: requirements.txt ด้วย conda: environment.yml