[python系列] 创建虚拟环境 venv

虚拟环境定义

Python 中的虚拟环境是一个隔离的运行环境,旨在为每个 Python 项目提供独立的执行空间,支持在不同的项目中分别管理依赖关系,而不会影响到其他项目或系统的原始 Python 安装。可以将虚拟环境视为每个 Python 项目的“独立容器”,每个容器具备以下特点:

  • 拥有独立的 Python 解释器
  • 拥有各自独立的包管理和安装的软件包
  • 与其他虚拟环境相互隔离
  • 允许同一包存在不同版本

使用虚拟环境的重要性体现在以下几个方面:

  • 避免包版本冲突:不同项目可能需要不同版本的同一依赖包,虚拟环境帮助隔离这些依赖,避免版本冲突。
  • 提高项目的可移植性和可重复性:虚拟环境确保项目的依赖和环境配置是一致的,从而保证项目在不同机器或团队成员之间能够顺利运行。
  • 保持系统 Python 安装的整洁:通过虚拟环境,您可以避免修改系统级别的 Python 安装,从而保持其稳定和清洁。
  • 支持多版本的 Python 测试:虚拟环境可以为不同版本的 Python 提供独立的测试平台,有助于进行兼容性测试。

因此,使用虚拟环境是管理 Python 项目依赖、提高开发效率并确保项目稳定性的最佳实践。


    创建虚拟环境

    基于当前的python创建虚拟环境 enroute_venv

    $ python -m venv enroute_venv

    虚拟环境 enroute_venv 的文件夹结构

    enroute_venv/
        bin/
        include/
        lib/
        pyvenv.cfg

    其中,bin 目录存放虚拟环境中的可执行文件,如 Python 解释器和 pip 工具;include 目录则包含 C 语言的头文件,用于支持与 C 扩展的编译;lib 目录则用于存储虚拟环境中安装的 Python 库和依赖包;pyenv.cfg 文件用于保存虚拟环境的配置信息,帮助 Python 环境正确地识别和初始化虚拟环境。


    使用虚拟环境

    方法一

    1. 先激活虚拟环境

    $ source enroute_venv/bin/activate

    当虚拟环境处于活动状态时,命令行将如下所示:

    (enroute_venv) $ 

    2. pip 安装依赖

    在虚拟环境激活状态下,执行 pip 命令时,会使用虚拟环境中对应的 pip 工具 (可通过 which pip 查看),所有的依赖包安装和 Python 脚本执行都会限定在该环境中。

    (enroute_venv) $ pip install click

    3. python 执行

    当执行 python 命令时,系统将使用虚拟环境中的 Python 解释器 (可通过 which python 查看)。

    (enroute_venv) $ python test.py

    4. 退出虚拟环境

    (enroute_venv) $ deactivate

    方法二 (推荐)

    参考 python 官网的解释,可以在执行 Python 命令时直接指定虚拟环境中 Python 解释器的完整路径,这样就能确保使用该虚拟环境的 Python 版本进行操作,避免了每次使用虚拟环境时先激活的步骤。同时,虚拟环境中安装的所有脚本和工具,如 pip  或其他命令行工具,也可以在不激活虚拟环境的情况下直接运行,系统会自动使用虚拟环境中的对应版本。

    # 指定虚拟环境python
    $ ./enroute_venv/bin/python test.py
    
    # 管理虚拟环境的依赖
    $ ./enroute_venv/bin/python -m pip install click

    You don’t specifically need to activate a virtual environment, as you can just specify the full path to that environment’s Python interpreter when invoking Python. Furthermore, all scripts installed in the environment should be runnable without activating it.


    删除虚拟环境

    使用虚拟环境的另一个显著优势是,当您需要删除虚拟环境时,无需担心会影响其他项目,因为它与其他项目完全隔离,只需删除对应的文件夹及其所有内容即可。

    例如,在命令行界面中删除名为 enroute_venv 的虚拟环境

    $ rm -rf ./enroute_venv 


    参考

    venv — Creation of virtual environments — Python 3.13.5 documentation

    Python Virtual Environment - venv

    你可能感兴趣的:(python,virtualenv)