DevToolBoxฟรี
บล็อก

คู่มือ Python Virtual Environments: venv, conda, pipenv, poetry

10 นาทีโดย DevToolBox

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" >> .gitignore

Poetry: การจัดการ 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

เครื่องมือที่เกี่ยวข้อง

𝕏 Twitterin LinkedIn
บทความนี้มีประโยชน์ไหม?

อัปเดตข่าวสาร

รับเคล็ดลับการพัฒนาและเครื่องมือใหม่ทุกสัปดาห์

ไม่มีสแปม ยกเลิกได้ตลอดเวลา

ลองเครื่องมือที่เกี่ยวข้อง

{ }JSON Formatter

บทความที่เกี่ยวข้อง

คู่มือครบครัน Python Type Hints: mypy, Protocols และการตรวจสอบ Runtime

เชี่ยวชาญ Python type hints 2026: mypy, Protocols และ runtime validation ด้วย Pydantic

FastAPI Tutorial: สร้าง REST API ด้วย Python ปี 2026

บทช่วยสอน FastAPI ฉบับสมบูรณ์: ตั้งค่า, routing, validation, การยืนยันตัวตน และ deployment

Python Decorators อธิบาย: จากพื้นฐานถึงขั้นสูง

เชี่ยวชาญ Python decorators: ฟังก์ชัน, คลาส, อาร์กิวเมนต์ และรูปแบบการใช้งานจริง