DevToolBox免费
博客

Python虚拟环境指南:venv、conda、pipenv和poetry

10分钟作者 DevToolBox

虚拟环境是 Python 依赖管理的基石。本指南涵盖四大主要工具:venvcondapipenvPoetry

为什么虚拟环境很重要

每个 Python 项目都有自己的依赖项和特定版本要求。虚拟环境通过为每个项目创建隔离的 Python 安装来解决冲突问题。

venv:内置标准库

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:现代依赖管理

Poetry 是最现代、功能最全的 Python 依赖管理工具。

# 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:数据科学利器

conda 不只是虚拟环境工具,还是可以安装非 Python 依赖的完整包管理器。

# 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)

常见问题

2026 年应该使用哪个虚拟环境工具?

通用 Python 开发和 Web 应用推荐 Poetry。数据科学和机器学习推荐 conda。

pip 和 conda 的区别是什么?

pip 只从 PyPI 安装 Python 包。conda 可以安装非 Python 依赖(C 库、CUDA 等)。

能在 conda 环境中使用 pip 吗?

可以,但需谨慎。混用 pip 和 conda 有时会导致冲突。

如何与其他开发者共享环境?

Poetry:提交 pyproject.toml 和 poetry.lock。pip:使用 requirements.txt。conda:使用 environment.yml。

相关工具

𝕏 Twitterin LinkedIn
这篇文章有帮助吗?

保持更新

获取每周开发技巧和新工具通知。

无垃圾邮件,随时退订。

试试这些相关工具

{ }JSON Formatter

相关文章

Python 类型注解完全指南:mypy、Protocols 与运行时验证

2026年Python类型注解完整指南:函数类注解、mypy静态检查、Protocol定义与Pydantic运行时验证。

FastAPI 教程:2026年用 Python 构建 REST API

完整 FastAPI 教程:设置、路由、请求验证、认证、数据库集成和部署。

Python 装饰器详解:从基础到高级

掌握 Python 装饰器:函数装饰器、类装饰器、带参数装饰器、functools.wraps,以及实际模式。