特性 详细描述
依赖隔离 每个虚拟环境都是独立的,避免了项目之间的库版本冲突。不同项目可以使用不同版本的依赖库,确保一个项目的更新不会影响到其他项目。
易于管理项目依赖 通过虚拟环境,你可以创建并管理每个项目的专有依赖列表。例如,你可以使用 requirements.txt 文件记录项目所需的依赖,这样其他开发者可以快速安装并复现环境。
与系统环境独立 虚拟环境不会影响系统级的 Python 环境,这样可以避免系统级 Python 安装包的干扰,尤其是在开发多个项目时。
便于团队协作 当团队成员之间使用相同的虚拟环境时,可以确保每个开发者使用一致的依赖,避免“在我电脑上能运行”的问题。通过共享依赖列表,其他人可以快速配置相同环境。
无管理员权限 创建和使用虚拟环境不需要管理员权限,非常适合在没有权限修改全局环境的系统上开发,如公司机器或公共计算机。
支持不同的 Python 版本 可以为不同的项目使用不同的 Python 版本,方便同时处理多个版本的项目。例如,项目 A 使用 Python 3.8,项目 B 使用 Python 3.9。
简化的部署流程 在生产环境中部署时,通过共享虚拟环境的配置文件(如 requirements.txt),能确保部署的环境与开发环境一致,减少潜在问题。
项目易于移植 由于虚拟环境独立于系统环境,你可以将虚拟环境及其依赖打包并迁移到另一台机器上,确保项目能够顺利运行。
提高开发效率 虚拟环境确保了每个项目的独立性,减少了开发时的环境配置时间,并提高了开发效率和可靠性。

虚拟环境的创建与管理:

  • 创建虚拟环境:
  •         在项目根目录下运行以下命令(Bash):

    python -m venv .venv

     

  • 激活虚拟环境:
  •         Windows:

    .\venv\Scripts\activate
    

            Linux:

    source .venv/bin/activate
    

     

  • 退出虚拟环境(通用):
     
  • deactivate

    管理依赖:

  • 安装依赖:在虚拟环境中使用 pip 安装需要的库:

    pip install <package_name>
  • 生成依赖文件:记录当前环境中已安装的包及版本:

    pip freeze > requirements.txt
  • 安装依赖:从 requirements.txt 安装所有包:

    pip install -r requirements.txt
    

  • 虚拟环境与 IDE 的配合:

  • 在 VSCode 中,你可以通过设置选项来选择虚拟环境作为 Python 解释器。可以在命令面板中(Ctrl+Shift+P)选择 Python: Select Interpreter,然后选择你创建的虚拟环境。
  • 虚拟环境种类:

    虚拟环境工具 特点 使用场景
    venv – Python 3.x 内置工具
    – 轻量级,简单易用
    – 小型项目、快速原型开发
    – 需要轻量级虚拟环境的独立项目
    virtualenv – 支持 Python 2 和 3
    – 更强大的配置选项和功能
    – 需要管理多个 Python 版本的项目
    – 兼容性要求高的复杂应用
    conda – 跨语言支持(Python、R 等)
    – 强大的包管理和环境管理功能
    – 数据科学、机器学习项目
    – 跨语言依赖管理
    – 需要大规模包和依赖管理的复杂项目
    pipenv – 集成包管理和虚拟环境管理
    – 自动创建虚拟环境,使用 Pipfile 管理依赖
    – 中小型项目
    – 希望简化依赖和虚拟环境管理的开发者
    Poetry – 现代化的依赖管理和包管理工具
    – 使用 pyproject.toml 配置文件
    – 需要严格依赖管理和版本控制的项目
    – 需要发布和打包的 Python 项目
    pyenv – 管理多个 Python 版本
    – 与 pyenv-virtualenv 配合使用支持虚拟环境
    – 需要管理多个 Python 版本的开发者
    – 需要灵活切换 Python 版本的项目
    Docker – 容器化解决方案
    – 完全隔离的开发环境,可以跨平台部署
    – 大型项目和微服务架构
    – 需要高度隔离和跨平台部署的一致开发环境

     

  • venv(内置虚拟环境)
  • 描述:venv 是 Python 3.3 及以上版本自带的模块,用于创建和管理虚拟环境。它简单轻量,适用于大部分开发场景。

    特点:
    只支持 Python 3 及以上版本。
    创建简单,不依赖外部工具。
    提供基本的虚拟环境功能。

    适用场景:一般 Python 项目,快速开发,独立环境管理。

    命令:
    python -m venv .venv

  • virtualenv(第三方工具)
  • 描述:virtualenv 是一个第三方库,可以为 Python 项目创建虚拟环境,功能比 venv 更强大,支持更多的功能和灵活的配置。

    特点:
    支持 Python 2 和 Python 3。
    可以为每个虚拟环境选择不同的 Python 版本(需要安装特定版本的 Python)。
    提供更多的配置选项,例如环境变量和插件支持。

    适用场景:需要支持旧版 Python(如 Python 2.x)的项目,或对虚拟环境有特殊需求的项目。

    命令:
    pip install virtualenv
    virtualenv .venv

  • conda(Anaconda/Miniconda)
  • 描述:conda 是一个开源的包管理器和环境管理工具,常与 Anaconda 和 Miniconda 一起使用。它不仅支持 Python 包的管理,还支持其他语言(如 R)的包管理。

    特点:
    支持创建和管理包含 Python 和其他库的虚拟环境。
    可以管理非 Python 包(如 R、Java、C 等),适用于数据科学和机器学习等多语言项目。
    强大的包管理和依赖管理功能。
    允许你选择不同的 Python 版本和库的版本。

    适用场景:数据科学、机器学习、需要跨语言管理依赖的项目。

    命令:
    conda create --name myenv python=3.8
    conda activate myenv

  • pipenv(Python 包管理器)
  • 描述:pipenv 是一个为 Python 提供更简洁、更安全的包管理工具,结合了 virtualenv 和 pip 的功能,旨在简化虚拟环境和依赖管理。

    特点:
    自动创建和管理虚拟环境。
    提供 Pipfile 和 Pipfile.lock 来代替 requirements.txt,通过锁定依赖的版本来提高可重复性。
    提供简化的命令行接口,可以自动安装和管理虚拟环境。

    适用场景:需要简化包管理、依赖管理的 Python 项目,适合那些重视开发和部署一致性的场景。

    命令:
    pip install pipenv
    pipenv install
    pipenv shell

  • Poetry(Python 包管理工具)
  • 描述:Poetry 是一个现代化的 Python 包管理工具,旨在解决包依赖、版本控制、发布和虚拟环境管理的问题。它是 pipenv 的一个替代品,提供了更加优雅和功能强大的方式来管理项目依赖。

    特点:
    提供更强大的依赖解析和包版本管理。
    支持创建虚拟环境并管理项目依赖。
    自动生成 pyproject.toml 文件,这是 Python 的现代化项目配置文件。

    适用场景:需要严格依赖管理,注重 Python 项目结构和发布的开发者。

    命令:
    pip install poetry
    poetry init
    poetry install
    poetry shell

  • pyenv(管理多个 Python 版本)
  • 描述:pyenv 主要用于管理多个 Python 版本。它并不是直接创建虚拟环境的工具,但与 venv 或 virtualenv 配合使用时,可以为每个项目选择不同的 Python 版本。

    特点:
    允许在同一台机器上安装和管理多个 Python 版本。
    可以轻松切换 Python 版本。
    常与 pyenv-virtualenv 配合使用,结合虚拟环境管理。

    适用场景:需要管理多个 Python 版本的开发者,特别是想在一个机器上运行多个版本的项目。

    命令:
    pyenv install 3.9.1
    pyenv global 3.9.1

  • Docker(容器化虚拟环境)
  • 描述:Docker 虽然不是传统意义上的虚拟环境工具,但它提供了一个容器化的解决方案,可以创建与操作系统无关的隔离环境,确保开发和生产环境一致。

    特点:
    在容器中运行代码,提供与操作系统完全隔离的环境。
    支持跨平台部署,确保开发环境与生产环境一致。
    可以容纳更多的依赖,支持包含操作系统层级的环境配置。

    适用场景:需要高度隔离、部署一致性和跨平台部署的项目,特别适用于微服务架构。
     

    命令:
    docker build -t myenv .
    docker run -it myenv
    

  • 总结
  • venv:适合一般的 Python 项目,轻量、简单。
    virtualenv:支持更多 Python 版本的管理,适合需要更多自定义配置的项目。
    conda:适合数据科学、机器学习等跨语言项目,提供完整的包和环境管理解决方案。
    pipenv:简化虚拟环境和包管理,适合希望减少配置复杂度的项目。
    Poetry:现代化的 Python 包管理工具,专注于严格的依赖版本管理。
    pyenv:管理多个 Python 版本,适合需要灵活切换版本的开发者。
    Docker:容器化解决方案,适合需要全隔离和跨平台部署的复杂项目。

    作者:真就死难

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python 虚拟环境

    发表回复