当前位置: 首页 > news >正文

Python 虚拟环境全攻略:从创建到升级,一文带你掌握!

Python 虚拟环境全攻略:创建、使用、管理及升级指南

在所有让 Python 深受开发者喜爱的因素中,丰富且不断扩展的第三方包选择至关重要。从数据摄取和格式化到高速数学运算和机器学习,各类便捷工具包通过 `import` 语句或 `pip install` 命令即可获取。然而,当包之间出现不兼容,或不同 Python 项目需要同一插件的不同甚至冲突版本时,Python 虚拟环境便能发挥作用。

什么是 Python 虚拟环境?

虚拟环境是创建多个并行 Python 解释器实例的方法,每个实例有不同的包集合和配置。每个虚拟环境包含独立的 Python 解释器副本及支持工具(如包管理器 `pip`)的副本。在每个虚拟环境中安装的包只能在该环境中被访问,其他环境无法看到。即便依赖特定平台二进制文件的大型复杂包,也能在虚拟环境中相互隔离。

为什么要使用 Python 虚拟环境?

虚拟环境有几个常见使用场景:
- **项目依赖不同版本的包**:开发多个依赖同一包不同版本的项目,或某个项目需与某些包隔离以避免命名空间冲突,这是最常见的使用场景。
- **无法修改系统包目录**:在无法修改 `site-packages` 目录的 Python 环境中工作,比如处于高度受控环境(如托管主机),或在服务器上因生产要求无法更改解释器(或其中使用的包)。
- **进行特定包组合的实验**:想在高度受控环境下尝试特定包组合,例如测试跨兼容性或向后兼容性。
- **运行纯净的 Python 解释器**:希望在没有第三方包的系统上运行 Python 解释器的“基准”版本,并根据需要为每个项目单独安装第三方包。

虽然可以将 Python 库解压缩到项目子文件夹使用,或下载独立的 Python 解释器副本并在特定文件夹运行脚本和包,但管理这样拼凑的项目会很快变得困难。从长远看,最好的解决方案是使用 Python 的原生机制来创建、复制和使用虚拟环境。

在 Python 3 中使用虚拟环境

Python 有用于创建虚拟环境的原生工具,使整个过程相当简单。目前,所有受支持的 Python 版本都使用原生虚拟环境工具 `venv`。

创建 Python 虚拟环境

要在指定目录创建虚拟环境,在命令行输入:
```bash
python3 -m venv /path/to/venv
```
例如,在当前目录下创建名为 `.venv` 的虚拟环境,可使用命令:
```bash
python3 -m venv .venv
```
在 Microsoft Windows 系统中,可用 `py` 代替 `python3` 确保访问已安装的 Python 版本。虚拟环境目录名称可任意选择,通常使用 `.venv`。设置虚拟环境可能需一到两分钟。完成后,该目录下会有几个子目录,最重要的是 Unix 系统上的 `bin` 目录或 Windows 系统上的 `Scripts` 目录,这里包含虚拟环境的 Python 解释器及其工具。

需注意,每个虚拟环境包含自己的 Python 解释器副本,可能占用较大磁盘空间。一个 Python 3.13 虚拟环境根据操作系统不同,可能占用 14MB 到 26MB 的磁盘空间。

虚拟环境与版本控制

若在使用版本控制系统(如 Git)管理的项目目录中设置虚拟环境,创建虚拟环境并进行任何提交前,应将环境目录排除在版本控制之外。虚拟环境不应与相关代码一起进行版本控制,因为它们可根据需要销毁和重新创建。不过,应将项目相关的 `requirements.txt` 或 `pyproject.toml` 文件进行版本控制,这些文件用于描述在虚拟环境中安装的内容。

激活 Python 虚拟环境

使用虚拟环境前,需显式激活它。激活后,虚拟环境将成为当前 shell 会话的默认 Python 解释器。根据不同操作系统和命令 shell,激活虚拟环境的语法不同:
- **Unix 或 MacOS(bash shell)**:
```bash
source /path/to/venv/bin/activate
```
- **Unix 或 MacOS(csh shell)**:
```bash
source /path/to/venv/bin/activate.csh
```
- **Unix 或 MacOS(fish shell)**:
```bash
source /path/to/venv/bin/activate.fish
```
- **Windows(Command Prompt)**:
```bash
path/to/venv/Scripts/Activate.bat
```
- **Windows(PowerShell)**:
```bash
path/to/venv/Scripts/Activate.ps1
```
需注意,激活的环境只在激活它的上下文中有效。例如,启动两个 PowerShell 实例 A 和 B,在实例 A 中激活虚拟环境,该环境只适用于 A,不适用于 B。许多 Python IDE 会自动检测并激活当前项目目录中的虚拟环境。如启用 Python 扩展时,Visual Studio Code 可做到这一点,在其中打开终端会自动激活所选的虚拟环境。PyCharm 会为每个新项目自动创建并启用虚拟环境。

配置和使用 Python 虚拟环境

激活新的虚拟环境后,可使用 `pip` 包管理器添加和更改环境中的包。在 Windows 系统中,`pip` 位于虚拟环境的 `Scripts` 子目录中;在 Unix 系统中,它位于 `bin` 子目录中。熟悉 `pip` 使用方法的话,在虚拟环境中使用它应没问题。只需确保使用的是在激活的上下文中管理虚拟环境包的 `pip` 实例,如在 bash 会话或 Windows CLI/PowerShell 会话中。若想验证是否使用了正确的 `pip` 和虚拟环境,可输入 `pip -V` 并检查显示的路径是否指向虚拟环境的子目录。

想在虚拟环境中升级 `pip` 时,最好使用命令 `python3 -m pip install -U pip`,确保升级过程不会锁定 Python 的关键文件。而命令 `pip install -U pip` 可能无法正确完成升级。要使用创建的虚拟环境运行 Python 脚本,在激活环境的上下文中从命令行调用 Python 即可。例如,运行脚本可使用 `python3 myscript.py`。在 PyCharm 中,可使用 IDE 自己的包管理界面来管理项目中安装的包。

管理 Python 虚拟环境中的包

创建新的虚拟环境时,`pip` 会自动安装,但仅此而已。需安装想在环境中使用的其他包。对于有复杂需求的项目,通常在项目根目录下保留一个 `requirements.txt` 文件,列出项目的依赖项。这样,若需重新创建虚拟环境,可使用命令 `pip install -r requirements.txt` 重新安装所有需要的包。

最近,Python 项目出现新的项目元数据格式 `pyproject.toml`。`pyproject.toml` 文件包含项目的包依赖项及大量其他相关信息。要安装这些依赖项,可在 `pyproject.toml` 文件所在的目录中运行 `pip install .`。

需注意,虚拟环境中的 `pip` 副本是该环境独有的。每个虚拟环境都有自己的副本,需独立更新和维护。这就是为何在某些虚拟环境中会收到 `pip` 过时的警告,而在其他环境中却没有的原因。每个虚拟环境中的 `pip` 都需单独更新。

停用 Python 虚拟环境

使用完虚拟环境后,可简单终止使用它的会话。若想在同一会话中继续工作,但使用默认的 Python 解释器,可在命令提示符下输入 `deactivate`。Windows 用户在 Command Prompt 中需从 `Scripts` 子目录运行 `deactivate.bat`,而 Unix 用户和使用 PowerShell 的 Windows 用户可在任何目录中直接输入 `deactivate`。

删除 Python 虚拟环境

虚拟环境是自包含的。不再需要虚拟环境时,只需删除其目录,但要确保先关闭所有使用该虚拟环境的 Python 进程。若想刷新或重新创建虚拟环境,可简单删除当前环境目录,然后按上述方法重新创建(见“管理 Python 虚拟环境中的包”)。这通常是将项目升级到较新版本 Python 的最简单方法:删除或临时重命名 `venv` 目录(以防新版本不兼容),然后创建一个新的并安装项目依赖项。若有许多不再使用的旧项目,可删除它们的虚拟环境以节省空间。需要时可轻松重新创建,但需记录创建它们时使用的 Python 版本以及所需的包(通常记录在 `requirements.txt` 或 `pyproject.toml` 中)。

迁移 Python 虚拟环境

不要试图将虚拟环境与其项目一起复制和移动。虚拟环境与创建它们的系统上的 Python 安装位置相关联。若想将项目迁移到另一个系统,不要复制 `venv` 目录,而是在目标机器上重新创建虚拟环境。不过,要将 `requirements.txt` 或 `pyproject.toml` 文件与项目一起复制和移动,因为这些文件是在其他系统上重新创建虚拟环境所必需的。

在 Python 2 中使用虚拟环境

在 Python 2 中,虚拟环境不是语言的原生特性。需安装第三方库来创建和管理虚拟环境。最流行和广泛使用的项目是 `virtualenv`,它负责创建目录结构并将所需文件复制到虚拟环境中。要安装 `virtualenv`,只需使用 `pip install virtualenv`。要使用它创建虚拟环境目录,可输入 `virtualenv /path/to/directory`。激活和停用虚拟环境的方法与 Python 3 中的虚拟环境相同(见上文)。

需注意,不建议在任何新开发中使用 Python 2。Python 2 中的虚拟环境,就像 Python 2 本身一样,只应用于维护最终应迁移到 Python 3 的遗留项目。

虚拟环境与 Python 主包目录

通常,创建 `venv` 时,它无法使用创建它的 Python 安装中已有的包。这是有意为之,以确保全局安装的包不会干扰本地包。不过,可在首次创建虚拟环境时覆盖此行为。若在运行 `venv` 时传递 `--system-site-packages` 标志,创建的 `venv` 将可以访问父 Python 的包目录。

在 Jupyter Notebook 中使用 Python 虚拟环境

若正在使用 Jupyter Notebook(又名 IPython Notebook),且已在系统范围内安装了 Jupyter,先创建并激活虚拟环境。然后,从虚拟环境目录中运行 `pip install ipykernel` 以添加 IPython 所需的组件。最后,运行 `ipython kernel install --user --name=`,其中 `` 是想与该特定项目关联的名称。之后,应能启动 Jupyter 并切换到在虚拟环境中安装的 IPython 内核。

升级 Python 虚拟环境

在系统上升级 Python 运行时,使用该版本 Python 的虚拟环境不会自动升级,需手动操作。这是有意设计的,因为不经意地升级 Python 版本可能会破坏相关的包。

若对现有的 Python 解释器进行小版本升级(例如,从 Python 3.13.1 升级到 Python 3.13.3),可轻松升级相应的虚拟环境。在项目目录的命令提示符下,输入:
```bash
python -m venv /path/to/venv --upgrade
```
升级前不要激活虚拟环境,否则升级可能无法正常工作。或者,如上文所述(见“删除 Python 虚拟环境”),可选择完全删除 `venv` 并使用 `requirements.txt` 或 `pyproject.toml` 文件重新创建它。

若安装了 Python 的主要新版本(例如,已有 Python 3.10,现在又安装了 Python 3.11),则需要创建一个专门使用新主要版本的新虚拟环境。不要尝试将现有的虚拟环境升级到更高的主要版本 Python。

http://www.jsqmd.com/news/989915/

相关文章:

  • 数据的加密与解密(04:11)
  • 12502华夏之光永存:黄大年茶思屋榜文125期 第2题 个性化TTS场景下的副信息控制迁移技术
  • 2026年评价高的宜宾毛坯房装修/宜宾全包装修/宜宾老房翻新装修品牌公司推荐 - 行业平台推荐
  • 第29届国际C语言混乱代码大赛揭晓:三位选手完成帽子戏法,台湾作者首获奖
  • 钢结构工程要注意的几个重要质量控制点
  • 终极指南:如何用FossFLOW快速创建专业级等距基础设施图
  • 如何在5分钟内搭建高精度人脸检测系统:YOLOv5-Face实战指南
  • 2026年质量好的贵州生猪销售/贵州富硒饲料/猪饲料/贵州富硒肉精选推荐公司 - 品牌宣传支持者
  • AMD Ryzen终极调试工具:5分钟掌握处理器性能调优
  • 计算机毕业设计之django跨区通勤人员健康管理系统的设计与实现
  • 阴阳师自动化脚本:如何用智能辅助高效管理你的日常游戏任务
  • BootstrapVue Next实战指南:5个关键技巧快速构建现代化Vue 3应用
  • Pywinauto终极指南:用Python轻松实现Windows GUI自动化测试的完整解决方案
  • 数据的加密与解密(04:13)
  • 2026年呼和浩特托盘厂家推荐榜单:塑料托盘/木质托盘/钢制托盘/重型/轻型/川字田字托盘及冷库防静电可堆叠托盘精选推荐 - 品牌发掘
  • 别再死记硬背GAN公式了!用Python和PyTorch从零复现经典论文,带你亲手跑出第一张‘假’MNIST
  • 3个秘诀快速掌握BIMserver:开源建筑信息模型的终极实战指南
  • oracle SGA
  • 6款优质降AI率软件 创作效率拉满
  • 2026男性爆款蓝牙耳机测评:梵洛音CZA06领衔全价位机型参数解析与场景化选购方案
  • 美团大模型算法面经深度解析:从理论到实战,助你拿下Offer!
  • 运维熬不动了别死撑!转网安越老越吃香,这才是破局路~
  • Navicat无限试用终极指南:三步实现Mac版Navicat16/17永久免费使用
  • 计算机毕业设计之Django框架的boss直聘可视化分析系统
  • 2026年靠谱的长春芳纶纸蜂窝吸波材料/长春芳纶纸蜂窝芯厂家推荐与选型指南 - 行业平台推荐
  • codex剪辑skills怎么配,5款剪辑自动化横评
  • 2026年评价高的加工/昆山五轴零件加工/金属零件加工口碑好的厂家推荐 - 行业平台推荐
  • 12503华夏之光永存:黄大年茶思屋榜文125期 第3题 面向语义和情感认知的语音encoder技术
  • 2026年 河南投料输送混合生产线厂家推荐:粉体颗粒/配料/304不锈钢产线实力品牌深度解析 - 品牌发掘
  • 如何将Revit模型高效转换为Web3D格式:Revit2GLTF完全指南