简介
欢迎来到 Python 虚拟环境实验。使用虚拟环境的目的是在封装的环境中测试 Python 代码,避免在基础 Python 安装目录中填充可能仅用于单个项目的库。这种做法对于保持开发环境的整洁、可复现且无冲突至关重要。
在本实验中,你将亲身体验五种用于管理 Python 虚拟环境和依赖的流行工具:
- virtualenv:用于创建隔离 Python 环境的基础工具。
- Poetry:集依赖管理、打包和发布于一体的工具。
- Pipenv:旨在将各种打包工具的优点集于一身的 Python 工具。
- Anaconda:一个流行的数据科学平台,包含强大的环境管理功能。
- UV:一个极速的、下一代 Python 包安装程序和解析器。
完成本实验后,你将能够根据项目的需求选择并使用合适的工具。
virtualenv
在这一步中,你将学习使用 virtualenv 来创建和管理隔离的 Python 环境。virtualenv 是一个用于创建隔离 Python 环境的工具,它允许你在封装的环境中测试代码,避免在基础 Python 安装目录中安装仅用于特定项目的库。该工具已为你预装。
首先,创建一个目录来存放你的虚拟环境,然后创建一个名为 HelloWorld 的新虚拟环境。在 WebIDE 中打开终端并运行以下命令:
mkdir -p ~/.virtualenvs
virtualenv ~/.virtualenvs/HelloWorld
环境创建时你会看到一些输出。虚拟环境将创建在 ~/.virtualenvs/HelloWorld 目录中。
created virtual environment CPython3.10.12.final.0-64 in 257ms
creator CPython3Posix(dest=/home/labex/.virtualenvs/HelloWorld, clear=False, no_vcs_ignore=False, global=False)
seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/labex/.local/share/virtualenv)
added seed packages: pip==24.0, setuptools==69.5.1, wheel==0.43.0
activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator
现在,激活该虚拟环境。这会将你的终端提示符更改为包含 (HelloWorld),表示虚拟环境现已激活。此后你使用 pip 安装的任何内容都将仅限于此环境,不会影响全局 Python 安装。
source ~/.virtualenvs/HelloWorld/bin/activate
激活后,你的提示符将变为 (HelloWorld):
(HelloWorld) labex:project/ $
要退出虚拟环境,只需使用 deactivate 命令:
deactivate
注意终端提示符中的 (HelloWorld) 前缀是如何消失的。
以后若要重新激活该环境,可以随时再次使用 source 命令:
source ~/.virtualenvs/HelloWorld/bin/activate
你的提示符将再次改变,你将回到 HelloWorld 环境中,准备继续你的项目工作。
Poetry
在这一步中,你将探索 Poetry,这是一个用于 Python 依赖管理和打包的现代工具。它允许你声明项目所依赖的库,并为你管理(安装/更新)它们。Poetry 已在此环境中安装。
确保你已经停用了之前的虚拟环境。
deactivate
首先,使用 Poetry 创建一个新项目。此命令将为你的项目设置标准的目录结构。
poetry new my-poetry-project
该命令会创建一个名为 my-poetry-project 的新目录,结构如下:
my-poetry-project
├── pyproject.toml
├── README.md
├── my_poetry_project
│ └── __init__.py
└── tests
├── __init__.py
└── test_my_poetry_project.py
这里最重要的文件是 pyproject.toml,它负责编排你的项目及其依赖项。让我们查看其初始内容。
cat my-poetry-project/pyproject.toml
输出内容如下所示:
[tool.poetry]
name = "my-poetry-project"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]
readme = "README.md"
[tool.poetry.dependencies]
python = "^3.10"
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
现在,进入你的新项目目录:
cd my-poetry-project
要添加新依赖,请使用 poetry add 命令。Poetry 会自动查找合适的版本并将其添加到 pyproject.toml 中。让我们添加 pendulum 库。
poetry add pendulum
要安装 pyproject.toml 中列出的所有依赖项(例如在克隆项目时),你可以运行:
poetry install
最后,要移除依赖项,请使用 poetry remove 命令:
poetry remove pendulum
这将移除该包并相应地更新 pyproject.toml 文件。
Pipenv
在这一步中,你将学习使用 Pipenv,这是一个旨在将各种打包工具的优点集于一身的 Python 工具。它会自动为你的项目创建和管理虚拟环境,并在你安装/卸载包时自动在 Pipfile 中添加/移除包。
首先,为你的新项目创建一个目录并进入该目录。
cd ~/project
mkdir my_pipenv_project
cd my_pipenv_project
现在,安装一个包。Pipenv 将自动创建一个新的虚拟环境和一个 Pipfile 来跟踪你的依赖项。让我们安装 requests 库。
pipenv install requests
命令完成后,你会在目录中看到两个新文件:Pipfile 和 Pipfile.lock。Pipfile 用于跟踪项目所需的依赖项。让我们检查其内容:
cat Pipfile
输出将显示 [packages] 下列出的 requests 包。
[[source]]
url = "https://pypi.org/simple"
verify_ssl = false
name = "pypi"
[packages]
requests = "*"
[dev-packages]
[requires]
python_version = "3.10"
要激活与项目关联的虚拟环境,请运行:
pipenv shell
你的终端提示符将发生变化,表明你现在处于项目的隔离环境中。
要卸载包,你可以在激活的 shell 中运行 uninstall 命令:
pipenv uninstall requests
要退出虚拟环境 shell,只需输入 exit:
exit
Anaconda
在这一步中,你将开始使用 Anaconda。Anaconda 是一个用于科学计算的 Python 和 R 发行版,它简化了包管理和部署。其包管理器 conda 非常适合创建和管理环境。你的终端中已提供 conda 命令。
首先,创建一个名为 my_conda_env 的新环境。我们还将指定要使用的 Python 版本。-y 标志会自动确认所有提示。
cd ~/project
conda create -n my_conda_env python=3.10 -y
环境创建完成后,你需要激活它才能开始使用。
conda activate my_conda_env
你的终端提示符现在将以 (my_conda_env) 为前缀,表示环境已激活。你现在安装的任何包都将仅限于此环境。以安装 numpy 为例:
conda install numpy -y
当你完成环境中的工作后,可以将其停用。
conda deactivate
前缀将从你的提示符中消失,你将回到基础环境。
UV
在这一步中,你将了解 UV,这是一个由 Ruff 的开发者 Astral 推出的极速 Python 包安装程序和解析器。它被设计为 pip 和 pip-tools 工作流的直接替代品,速度可提升 10-100 倍。UV 已为你预装。
首先初始化一个新项目。uv init 命令将创建一个 pyproject.toml 文件并在 .venv 目录中创建一个虚拟环境。
cd ~/project
uv init my-uv-project
现在,进入新创建的项目目录。
cd my-uv-project
要添加依赖项,请使用 uv add 命令。这类似于 poetry add 或 npm install。让我们添加 requests 库。
uv add requests
UV 会自动检测并使用当前目录中的虚拟环境。你可以使用 uv run 在此托管环境中运行命令。让我们检查环境中的 Python 版本。
uv run python --version
你应该会看到虚拟环境中的 Python 版本,而不是全局版本。
如果你更喜欢手动激活 shell,可以像使用标准 venv 一样操作:
source .venv/bin/activate
你的提示符将变为 (.venv),表示环境已激活。要离开激活的 shell,请使用 deactivate 命令。
deactivate
UV 通过提供一个用于包和环境管理的、极其快速的单一二进制文件,简化了工作流。
总结
在本实验中,你亲身体验了几种管理 Python 虚拟环境和依赖的重要工具。妥善管理项目环境是任何 Python 开发者的基本技能,它能确保代码的可复现性并避免冲突。
你学习了:
- 使用 virtualenv 创建、激活和管理基础的隔离环境。
- 利用 Poetry 实现统一的工作流,通过
pyproject.toml文件处理项目创建、依赖管理和打包。 - 使用 Pipenv 通过
Pipfile声明式地管理应用程序依赖,简化开发环境的设置过程。 - 使用 Anaconda (
conda) 创建和管理环境,该工具因其对复杂包的强大处理能力而在数据科学界广受欢迎。 - 探索 UV,这是一个全新的、极速的工具,将包安装、解析和环境管理统一到一个二进制文件中。
每种工具都有其优势,最佳选择通常取决于项目的具体需求和你个人的工作流偏好。现在,你已经具备了做出明智决策并有效管理 Python 项目的能力。



