如何激活和停用 Python 虚拟环境

PythonPythonBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

Python 虚拟环境是管理 Python 项目依赖项的重要工具。它们创建了隔离的空间,你可以在其中安装软件包,而不会影响系统的全局 Python 安装。这种隔离有助于防止不同项目之间可能因需要同一软件包的不同版本而产生冲突。

在这个实验中,你将学习如何创建、激活和停用 Python 虚拟环境。这些技能是 Python 开发者的基础技能,将帮助你为项目维护干净、有序且可重现的开发环境。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python(("Python")) -.-> python/NetworkingGroup(["Networking"]) python/ModulesandPackagesGroup -.-> python/using_packages("Using Packages") python/PythonStandardLibraryGroup -.-> python/os_system("Operating System and System") python/NetworkingGroup -.-> python/http_requests("HTTP Requests") subgraph Lab Skills python/using_packages -.-> lab-397940{{"如何激活和停用 Python 虚拟环境"}} python/os_system -.-> lab-397940{{"如何激活和停用 Python 虚拟环境"}} python/http_requests -.-> lab-397940{{"如何激活和停用 Python 虚拟环境"}} end

理解和创建 Python 虚拟环境

在创建 Python 虚拟环境之前,让我们先了解一下它是什么以及为什么它很重要。

什么是 Python 虚拟环境?

Python 虚拟环境是一个隔离的 Python 解释器安装。当你激活一个虚拟环境时,你安装的任何软件包都会被放置在该环境的私有目录中,而不是系统全局的 Python 安装目录中。这种隔离带来了以下几个好处:

  • 你可以为不同的项目使用同一软件包的不同版本
  • 你可以轻松地与他人共享所需软件包的确切列表
  • 你可以保持系统 Python 的干净和有序

创建你的第一个虚拟环境

Python 3.3 及更高版本包含 venv 模块,这是创建虚拟环境的推荐工具。让我们来创建第一个虚拟环境:

  1. 首先,确保你位于项目目录中:

    mkdir -p ~/project/python_env_demo
    cd ~/project/python_env_demo
  2. 通过运行以下命令创建一个名为 myenv 的新虚拟环境:

    sudo apt-get update
    sudo apt-get install python3.10-venv -y
    python3 -m venv myenv
  3. 让我们查看一下创建了哪些内容:

    ls -la myenv

    你应该会看到类似于以下的输出:

    total 20
    drwxrwxr-x 5 labex labex 4096 Sep 14 10:00 .
    drwxrwxr-x 3 labex labex 4096 Sep 14 10:00 ..
    drwxrwxr-x 2 labex labex 4096 Sep 14 10:00 bin
    drwxrwxr-x 2 labex labex 4096 Sep 14 10:00 include
    drwxrwxr-x 3 labex labex 4096 Sep 14 10:00 lib
    -rw-rw-r-- 1 labex labex   70 Sep 14 10:00 pyvenv.cfg

venv 命令创建了一个名为 myenv 的目录,其中包含几个子目录。最重要的子目录有:

  • bin:包含 Python 解释器、pip 和激活脚本
  • lib:包含此环境中安装的软件包
  • pyvenv.cfg:虚拟环境的配置文件

现在,你已经成功创建了一个 Python 虚拟环境,随时可以激活并使用它。

激活 Python 虚拟环境

现在你已经创建了一个虚拟环境,在使用它之前需要先激活它。激活操作会修改你 shell 的环境变量,使你使用虚拟环境中的 Python 解释器和软件包,而非系统全局的 Python 安装。

如何激活虚拟环境

  1. 确保你位于项目目录中:

    cd ~/project/python_env_demo
  2. 通过运行以下命令激活虚拟环境:

    source myenv/bin/activate
  3. 注意你的命令提示符已经改变。现在,提示符开头的括号中会显示虚拟环境的名称:

    (myenv) labex:python_env_demo/ $

    这个视觉提示能帮助你记住自己正在虚拟环境中工作。

验证激活状态

为了确认你的虚拟环境已激活且正常工作,你可以进行以下检查:

  1. 查看正在使用的 Python 解释器:

    which python

    你应该会看到类似以下的输出:

    /home/labex/project/python_env_demo/myenv/bin/python

    这表明 python 命令现在指向的是你虚拟环境中的 Python 解释器,而非系统全局的解释器。

  2. 查看正在使用的 pip(Python 软件包安装器):

    which pip

    你应该会看到类似以下的输出:

    /home/labex/project/python_env_demo/myenv/bin/pip

    这确认了你将把软件包安装到虚拟环境中,而不是系统的 Python 环境中。

  3. 检查 Python 版本:

    python --version

    输出将显示你虚拟环境中正在使用的 Python 版本。

现在你已经成功激活了 Python 虚拟环境。你运行的任何 Python 命令以及安装的任何软件包都将使用这个隔离的环境,而不是系统的 Python 安装。

在虚拟环境中安装软件包

虚拟环境的主要优点之一是能够独立于系统全局的 Python 安装来安装和管理 Python 软件包。让我们来探讨如何在已激活的虚拟环境中安装软件包。

使用 pip 安装软件包

  1. 确保你的虚拟环境仍然处于激活状态。你的命令提示符开头应该显示 (myenv)。如果未激活,请使用以下命令激活它:

    source myenv/bin/activate
  2. 让我们安装一个名为 requests 的简单软件包,它通常用于发起 HTTP 请求:

    pip install requests

    你会看到显示下载和安装过程的输出。

  3. 通过查看已安装软件包的列表来验证该软件包是否已安装:

    pip list

    你应该会在列表中看到 requests 及其依赖项:

    Package            Version
    ------------------ ---------
    certifi            2025.1.31
    charset-normalizer 3.4.1
    idna               3.10
    pip                22.0.2
    requests           2.32.3
    setuptools         59.6.0
    urllib3            2.3.0

使用已安装的软件包

让我们创建一个简单的 Python 脚本来测试 requests 软件包:

  1. 打开编辑器,在 ~/project/python_env_demo 目录下创建一个名为 test_requests.py 的新文件:

    import requests
    
    response = requests.get('https://httpbin.org/get')
    print(f"Status Code: {response.status_code}")
    print(f"Content Type: {response.headers['content-type']}")
    print("\nResponse Body Preview:")
    print(response.text[:300] + "...")
  2. 保存文件并运行它:

    python test_requests.py
    运行 test_requests.py
  3. 你应该会看到类似于以下的输出:

    Status Code: 200
    Content Type: application/json
    
    Response Body Preview:
    {
    "args": {},
    "headers": {
    "Accept": "_/_",
    "Accept-Encoding": "gzip, deflate",
    "Host": "httpbin.org",
    "User-Agent": "python-requests/2.32.3",
    "X-Amzn-Trace-Id": "Root=1-67ca4e9a-3b65928a0af016e74bc867b7"
    },
    "origin": "47.251.8.222",
    "url": "https://httpbin.org/g...

这表明 requests 软件包已成功安装到你的虚拟环境中,并且可以正常工作。

停用 Python 虚拟环境

当你完成在虚拟环境中的工作后,可能希望回到系统的全局 Python 环境。这个过程称为停用。

如何停用虚拟环境

  1. 确保你的虚拟环境当前处于激活状态。你的命令提示符开头应该显示 (myenv)

  2. 要停用虚拟环境,只需运行:

    deactivate
  3. 注意你的命令提示符已恢复正常。(myenv) 前缀已消失:

    labex:python_env_demo/ $

验证停用状态

为了确认你的虚拟环境已停用,并且你已回到使用系统 Python 的状态,请运行以下检查:

  1. 检查正在使用的 Python 解释器:

    which python3

    你应该会看到类似以下的输出:

    /usr/bin/python3

    这表明 python3 命令现在指向系统全局的 Python 解释器。

  2. 尝试运行我们之前创建的脚本:

    python3 test_requests.py

    根据 requests 软件包是否安装在你的系统 Python 中,你可能会看到一个错误:

    Traceback (most recent call last):
      File "/home/labex/project/python_env_demo/test_requests.py", line 1, in <module>
        import requests
    ModuleNotFoundError: No module named 'requests'

    这个错误的出现是因为 requests 软件包安装在你的虚拟环境中,而不是系统 Python 中。这正是虚拟环境的主要优点之一——为不同项目隔离软件包。

重新激活虚拟环境

如果你需要再次处理你的项目,可以轻松地重新激活虚拟环境:

source myenv/bin/activate

你的命令提示符将再次显示 (myenv),表明虚拟环境已激活。

常见虚拟环境命令总结

以下是我们介绍过的命令的快速参考:

命令 描述
python3 -m venv myenv 创建一个名为 "myenv" 的新虚拟环境
source myenv/bin/activate 激活虚拟环境
pip install package_name 在活动的虚拟环境中安装一个软件包
pip list 列出活动虚拟环境中已安装的软件包
deactivate 停用当前的虚拟环境

这些命令构成了使用 Python 虚拟环境的基础,使你能够为项目创建、使用和管理隔离的 Python 环境。

总结

在本次实验中,你已经学习了使用 Python 虚拟环境的必备技能:

  • 理解虚拟环境的概念和优点
  • 使用 venv 模块创建新的虚拟环境
  • 激活虚拟环境以隔离你的 Python 工作
  • 使用 pip 在虚拟环境中安装软件包
  • 使用简单的 Python 脚本测试已安装的软件包
  • 在完成工作后停用虚拟环境

这些技能构成了良好 Python 开发实践的基础。通过使用虚拟环境,你可以:

  • 使项目的依赖项相互隔离
  • 避免不同版本软件包之间的冲突
  • 让你的项目更具可重复性,且更易于共享
  • 维护一个干净、有条理的 Python 开发环境

虚拟环境是从初学者到专家的各级 Python 开发者的必备工具。在你继续 Python 学习之旅时,使用虚拟环境将成为你开发工作流程中的自然组成部分。