venv 是 Python 的一个模块,用于创建和管理虚拟环境(Virtual Environment)。虚拟环境是一个独立的 Python 运行环境,允许你在同一台机器上安装和管理多个 Python 项目,每个项目可以有自己独立的依赖包(虚拟运行环境),而不会相互干扰。

虚拟环境的主要用途

  1. 隔离依赖包

    • 每个项目可以有自己的依赖包版本,不会影响其他项目。例如,项目 A 可能需要 Flask 1.0,而项目 B 可能需要 Flask 2.0。使用虚拟环境可以确保每个项目使用正确的依赖版本。
  2. 简化依赖管理

    • 通过 pip 安装的包会存储在虚拟环境的 site-packages 目录中,而不是全局 Python 环境中。这使得依赖管理更加简单和清晰。
  3. 避免全局环境污染

    • 避免在全局 Python 环境中安装过多的包,减少包冲突和版本不兼容的问题。
  4. 便于部署

    • 虚拟环境可以轻松地打包和部署,确保在不同环境中运行时依赖包的一致性。

下面仅介绍Linux系统如何搭建虚拟环境:

如果系统缺少 python3-venv 包,会导致无法创建 Python 的虚拟环境。请按照以下步骤进行操作,安装必要的包,然后创建虚拟环境。

安装步骤

  1. 更新包索引(可选,但推荐):
    首先,可以更新你的包索引,以确保你安装的是最新版本的包。

    sudo apt update
    
  2. 安装 python3-venv 包
    根据python解释器的版本选择包的版本,比如安装 python3.8-venv(假设你使用的是 Python 3.8,如果你使用的是其他版本的 Python,替换版本号即可):

    sudo apt install python3.8-venv
    

    如果你希望安装适配 Python 3 的最新版本,可以使用:

    sudo apt install python3-venv
    
  3. 安装 python3-pip 包(如果尚未安装pip,一般不会用到):
    确保你已经安装了 pip,这是虚拟环境中通常使用的包管理工具:

    sudo apt install python3-pip
    
  4. 重新创建虚拟环境
    安装完成后,在你的项目(自己创建一个项目文件夹)目录下执行以下命令,尝试创建虚拟环境:

    python3 -m venv .venv
    
  5. 激活虚拟环境
    创建成功后,可以激活虚拟环境:

    source .venv/bin/activate

 
在激活的虚拟环境中,使用 pip 安装所需的包:这个包仅会在当前虚拟环境起作用,其他虚拟环境以及全局环境中不会起作用。

pip install package_name


当你完成工作后,可以退出虚拟环境:

deactivate

示例

假设你有两个项目:ProjectA 和 ProjectB,它们需要不同的 Flask 版本。

  1. 创建虚拟环境

    cd ProjectA
    python3 -m venv .venv
    source .venv/bin/activate
    pip install Flask==1.0
    deactivate
    
    cd ../ProjectB
    python3 -m venv .venv
    source .venv/bin/activate
    pip install Flask==2.0
    deactivate
    
  2. 运行项目

    • 进入 ProjectA 目录,激活虚拟环境,运行项目:

      cd ProjectA
      source .venv/bin/activate
      python app.py
      deactivate
      
    • 进入 ProjectB 目录,激活虚拟环境,运行项目:

      cd ../ProjectB
      source .venv/bin/activate
      python app.py
      deactivate
      

通过这种方式,你可以确保每个项目使用正确的依赖版本,而不会相互干扰。

总结

        虚拟环境是 Python 开发中的一个重要工具,它帮助你隔离和管理不同项目的依赖包,避免全局环境污染,简化依赖管理,并便于项目的部署和迁移。

 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐