【Python百宝箱】Python项目生态圈:虚拟环境全指南

news2024/11/26 19:49:47

项目管理达人:Python虚拟环境的智慧选择

前言

在Python开发领域,创建虚拟环境是一项至关重要的任务,它有助于项目之间的依赖隔离,确保每个项目都能独立运行且使用特定的库和工具。本文将介绍多种创建Python虚拟环境的方法,涵盖了内置模块、第三方工具以及其他辅助工具,以帮助读者选择最适合其需求的方式。

文章目录

  • 项目管理达人:Python虚拟环境的智慧选择
    • 前言
      • 1. 介绍
        • 1.1 背景
        • 1.2 目的
        • 1.3 为什么需要虚拟环境?
      • 2. 创建虚拟环境的内置模块
        • 2.1 `venv` 模块
        • 2.2 `venv` 模块的常用命令
        • 2.3 `venv` 模块的优势和注意事项
          • 优势:
          • 注意事项:
        • 2.4 gradio共享连接实例
          • 创建虚拟环境
          • 安装依赖
          • 测试
      • 3. 使用 Virtualenv
        • 3.1 安装 Virtualenv
        • 3.2 使用 Virtualenv
        • 3.3 Virtualenvwrapper
          • 3.3.1 列出所有虚拟环境
          • 3.3.2 进入虚拟环境
          • 3.3.3 退出虚拟环境
          • 3.3.4 删除虚拟环境
          • 3.3.5 创建虚拟环境并安装依赖
        • 3.4 Virtualenvwrapper 的优势和限制
          • 优势:
          • 限制:
        • 3.5 适用场景
      • 4. 使用 Pyenv
        • 4.1 安装 Pyenv
        • 4.2 使用 Pyenv
        • 4.3 Pyenv-virtualenvwrapper
        • 4.4 Pyenv 的优势和限制
          • 优势:
          • 限制:
        • 4.5 适用场景
      • 5. 使用 Pipenv
        • 5.1 安装 Pipenv
        • 5.2 使用 Pipenv
        • 5.3 Pipenv 的优势和限制
          • 优势:
          • 限制:
        • 5.4 适用场景
        • 5.5 Pipenv 常用命令
      • 6. 使用 Conda
        • 6.1 安装 Conda
        • 6.2 使用 Conda
        • 6.3 Conda 的优势和限制
          • 优势:
          • 限制:
        • 6.4 适用场景
        • 6.5 Conda 常用命令
      • 7. 使用 Poetry
        • 7.1 安装 Poetry
        • 7.2 使用 Poetry
        • 7.3 Poetry 的优势和限制
          • 优势:
          • 限制:
        • 7.4 适用场景
        • 7.5 Poetry 常用命令
      • 8. Direnv
        • 8.1 安装 Direnv
        • 8.2 使用 Direnv
        • 8.3 Direnv 的优势和限制
          • 优势:
          • 限制:
        • 8.4 适用场景
        • 8.5 Direnv 常用命令
        • 8.6 总结
      • 9. Pew
        • 9.1 安装 Pew
        • 9.2 使用 Pew
        • 9.3 Pew 的优势和限制
          • 优势:
          • 限制:
        • 9.4 适用场景
        • 9.5 Pew 常用命令
      • 10. Virtualfish
        • 10.1 安装 Virtualfish
        • 10.2 使用 Virtualfish
        • 10.3 Virtualfish 的优势和限制
          • 优势:
          • 限制:
        • 10.4 适用场景
        • 10.5 Virtualfish 常用命令
        • 10.6 总结
      • 11. Hatch
        • 11.1 安装 Hatch
        • 11.2 使用 Hatch
        • 11.3 Hatch 的优势和限制
          • 优势:
          • 限制:
        • 11.4 适用场景
        • 11.5 Hatch 常用命令
      • 12. Conda-Forge
        • 12.1 安装 Conda-Forge
        • 12.2 使用 Conda-Forge
        • 12.3 Conda-Forge 的优势和限制
          • 优势:
          • 限制:
        • 12.4 适用场景
        • 12.5 Conda-Forge 常用命令
      • 13. 总结
        • 13.1 不同方式的优劣比较
        • 13.2 如何选择适当的创建虚拟环境方式

1. 介绍

1.1 背景

在Python开发的日常工作中,项目通常涉及到多个库和依赖,而这些库可能因为版本不同而导致项目之间的冲突。为了解决这一问题,创建虚拟环境成为了一种被广泛采纳的最佳实践。通过虚拟环境,我们能够在不同的项目中隔离依赖,确保每个项目都能稳定运行,并使用特定版本的库和工具。

虚拟环境的概念类似于“沙盒”,它为每个项目提供了一个独立的运行环境,使得项目之间的依赖关系不会相互干扰。这在大型项目、团队协作和不同阶段的开发过程中尤为重要。通过正确使用虚拟环境,我们可以避免出现因为依赖冲突而导致的难以追踪的错误,提高项目的可维护性和稳定性。

1.2 目的

本文的目标是向读者介绍创建Python虚拟环境的多种方法,并深入了解这些方法的优劣和适用场景。在探讨这些方法时,我们将关注每种方法的具体实现步骤、优势特点以及潜在的注意事项。通过详细的比较和示例,读者将能够更好地理解每种方法的适用性,并为自己的项目选择最合适的虚拟环境管理方式。

虚拟环境不仅仅是解决依赖冲突的工具,同时也是促使项目独立发展、提高开发效率的关键因素。在多样化的开发环境中,选择合适的虚拟环境工具可以极大地简化开发流程,减少潜在问题,使开发者更专注于项目的业务逻辑和创新。

1.3 为什么需要虚拟环境?

在一个典型的Python项目中,我们可能会使用多个第三方库和工具。这些库有时会依赖于特定的版本,而不同项目之间可能需要不同版本的同一库。如果我们在全局环境中安装这些库,就可能导致版本冲突,使得其中一个项目无法正常运行。虚拟环境的出现正是为了解决这个问题。通过在项目中创建独立的虚拟环境,每个项目可以拥有自己的依赖关系,而不受全局环境的影响。

在一个虚拟环境中,你可以安装和管理项目所需的库和工具,而这些安装将不会影响到其他项目。这种隔离性质使得项目可以更加独立、可维护性更高。虚拟环境还允许你轻松地导出项目的依赖关系,方便其他开发者在相同的环境中运行项目,确保一致的开发体验。

在接下来的章节中,我们将探讨几种不同的方法来创建和管理虚拟环境,以满足不同场景下的需求。

2. 创建虚拟环境的内置模块

2.1 venv 模块

Python的内置模块venv提供了一种轻量级的虚拟环境创建方式。以下是使用venv模块创建虚拟环境的步骤:

python -m venv myenv

这将在当前目录下创建一个名为myenv的虚拟环境。要激活虚拟环境,可以执行以下命令:

  • 在 Windows 上:
    myenv\Scripts\activate
    
  • 在 macOS/Linux 上:
    source myenv/bin/activate
    
2.2 venv 模块的常用命令

在使用venv模块创建和管理虚拟环境时,有一些常用的命令可以帮助你更轻松地操作。

  1. 激活虚拟环境:

    # 在 Windows 上
    myenv\Scripts\activate
    
    # 在 macOS/Linux 上
    source myenv/bin/activate
    

    激活虚拟环境后,命令行提示符会变更,表示你已经进入了虚拟环境。

  2. 退出虚拟环境:

    deactivate
    

    退出虚拟环境,返回到全局环境。

  3. 查看已安装的包:

    pip list
    

    显示当前虚拟环境中已安装的所有包及其版本。

  4. 安装新的包:

    pip install package_name
    

    在虚拟环境中安装新的Python包。

  5. 导出依赖列表:

    pip freeze > requirements.txt
    

    将当前虚拟环境中安装的所有包及其版本导出到requirements.txt文件中,方便共享项目依赖。

  6. 从 requirements 文件安装依赖:

    pip install -r requirements.txt
    

    从指定的requirements.txt文件中安装项目依赖。

2.3 venv 模块的优势和注意事项
优势:
  1. 轻量级: venv是Python标准库的一部分,无需额外安装。

  2. 易于使用: 简单的命令就能够创建、激活、和退出虚拟环境。

  3. 无需额外安装: 不需要额外的安装步骤,使得在不同的环境中迁移项目更加便捷。

注意事项:
  1. 不支持Python 2: venv仅适用于Python 3.3及更高版本。

  2. 环境隔离限制: 虽然提供了基本的隔离,但在某些情况下,特别是涉及系统包的时候,可能不够完全隔离。

  3. 不支持自定义配置: 相对简单,不提供与某些高级配置相关的选项。

  4. 不包含pipsetuptools 在某些系统中,创建的虚拟环境可能没有预安装pipsetuptools,需要手动安装。

  5. 全局安装的Python影响: 如果系统中只有一个全局Python解释器,则创建的虚拟环境也会受到全局Python的影响。

综上所述,venv模块是一个方便快捷的虚拟环境管理工具,特别适用于轻量级项目和初学者。在更复杂的项目中,或者对于更灵活的配置需求,可能需要考虑其他虚拟环境管理工具。接下来,我们将继续介绍其他工具,以帮助读者选择适合其需求的虚拟环境管理方式。

2.4 gradio共享连接实例
创建虚拟环境
python -m venv venv
venv\Scripts\activate

或直接这里新建
在这里插入图片描述

在这里插入图片描述

安装依赖
python.exe -m pip install --upgrade pip
pip install gradio

在这里插入图片描述

测试

测试代码

"""

NAME : xc

USER : admin

DATE : 26/11/2023

PROJECT_NAME : BS

CSDN : friklogff
"""
import gradio as gr


# 定义一个处理函数,它接受文本、数字和文件输入,并返回一个包含输入信息的文本输出。
def process(text, number, file):
    return f"Text: {text}, Number: {number}, File: {file.name}"


# 使用 gr.Interface 类创建一个新的Gradio界面,并将 process 函数作为输入和输出函数传递给它。
iface = gr.Interface(
    fn=process,
    # 定义输入组件,包括文本框、数字框和文件选择器。
    inputs=[
        gr.components.Textbox(label="Text"),
        gr.components.Number(label="Number"),
        gr.components.File(label="File")
    ],
    # 定义输出类型为文本。
    outputs="text"
)

# 调用 launch 方法来启动Gradio应用程序。
iface.launch(share=True)

老问题,这样解决【Gradio-Windows-Linux】解决share=True无法创建共享链接,缺少frpc_windows_amd64_v0.2

在这里插入图片描述
可以看到要放在这里,复制进来即可

E:\PRODUCE\BS\venv\Lib\site-packages\gradio
在这里插入图片描述

成功解决
在这里插入图片描述

3. 使用 Virtualenv

3.1 安装 Virtualenv
pip install virtualenv

3.2 使用 Virtualenv
virtualenv myenv
3.3 Virtualenvwrapper

Virtualenvwrapper 是 Virtualenv 的扩展,它提供了一些用于管理虚拟环境的额外命令。以下是一些常用的 Virtualenvwrapper 命令:

3.3.1 列出所有虚拟环境
lsvirtualenv

此命令会列出所有已创建的虚拟环境的名称,方便你查看当前系统中存在的虚拟环境。

3.3.2 进入虚拟环境
workon <虚拟环境名称>

使用此命令可以激活指定名称的虚拟环境,让你在其中工作。

3.3.3 退出虚拟环境
deactivate

在虚拟环境中工作完成后,使用此命令可以退出当前虚拟环境,回到全局环境。

3.3.4 删除虚拟环境
rmvirtualenv <虚拟环境名称>

如果你需要删除不再使用的虚拟环境,可以使用此命令。请确保在删除之前你已经退出该虚拟环境。

3.3.5 创建虚拟环境并安装依赖
mkvirtualenv --python=<指定 Python 版本> <虚拟环境名称>

使用此命令可以创建一个带有指定 Python 版本的虚拟环境,并且在创建时可以额外指定安装的依赖包。

3.4 Virtualenvwrapper 的优势和限制
优势:
  1. 多环境管理: Virtualenvwrapper 提供了一套命令用于创建、切换、删除虚拟环境,使得在多个项目中轻松管理不同的虚拟环境。

  2. 环境列表: 使用 lsvirtualenv 可以列出所有已创建的虚拟环境,方便查看和管理。

  3. 简化激活命令: 使用 workon 命令可以更简便地激活虚拟环境,无需记住虚拟环境的完整路径。

  4. 依赖管理: 支持在创建虚拟环境时指定Python版本,并且可以在创建时直接安装项目所需的依赖包。

限制:
  1. 仅支持bash和zsh: Virtualenvwrapper 主要设计用于bash和zsh shell,因此在其他shell上可能不适用。

  2. 额外学习成本: 对于初学者来说,学习和掌握 Virtualenvwrapper 的一些命令和概念可能需要一些额外的时间。

3.5 适用场景
  • 团队协作: 在团队项目中,使用 Virtualenvwrapper 可以更好地协调和管理不同成员的开发环境。

  • 多项目开发: 如果你同时参与多个项目的开发,Virtualenvwrapper 可以方便地切换不同项目的虚拟环境。

  • 依赖管理: 对于需要在虚拟环境中安装特定版本Python和依赖包的项目,Virtualenvwrapper 提供了便捷的方式。

总体而言,Virtualenvwrapper 是一个方便的虚拟环境管理工具,适用于需要在多个项目中切换工作环境的开发者。在选择使用时,可以考虑你的开发团队结构和个人习惯,以及对于额外学习成本的接受程度。接下来,我们将继续介绍其他虚拟环境管理工具,以提供更多选择。

4. 使用 Pyenv

4.1 安装 Pyenv

首先,安装 Pyenv。Pyenv 是一个用于管理多个 Python 版本的工具,可以方便地切换不同版本的 Python。

curl https://pyenv.run | bash
4.2 使用 Pyenv

使用 Pyenv 可以轻松创建和管理虚拟环境。以下是使用 Pyenv 创建虚拟环境的步骤:

pyenv virtualenv 3.8.5 myenv

这将创建一个名为 myenv 的虚拟环境,并使用 Python 3.8.5 版本。你可以根据项目需求选择不同的 Python 版本。

4.3 Pyenv-virtualenvwrapper

如果你想结合 Pyenv 和 Virtualenvwrapper 使用,可以通过以下步骤安装 Pyenv 和 virtualenvwrapper 插件:

# 使用 Homebrew 安装 Pyenv 和 Pyenv-virtualenvwrapper
brew install pyenv pyenv-virtualenvwrapper

安装完成后,激活 virtualenvwrapper 插件并创建虚拟环境:

# 激活 Pyenv 和 virtualenvwrapper 插件
pyenv virtualenvwrapper

# 创建并激活虚拟环境
mkvirtualenv myenv
4.4 Pyenv 的优势和限制
优势:
  1. 多版本管理: Pyenv 允许在同一系统上同时安装和管理多个 Python 版本,便于不同项目使用不同版本的 Python。

  2. 轻松切换版本: 使用 Pyenv 可以轻松切换全局 Python 版本或针对特定项目设置不同的 Python 版本。

  3. 集成 Virtualenvwrapper: Pyenv 可以与 Virtualenvwrapper 集成,提供了更丰富的虚拟环境管理功能。

限制:
  1. 依赖系统安装: 安装 Pyenv 需要依赖系统的一些工具和库,可能在某些系统上会遇到依赖安装的问题。

  2. 学习曲线: 对于初学者来说,Pyenv 的配置和使用可能需要一些时间来适应和学习。

4.5 适用场景
  • 多版本支持: Pyenv 适用于需要在同一开发机上管理多个 Python 版本的场景,例如在一个团队中可能存在使用不同 Python 版本的项目。

  • 项目独立环境: 如果你希望为每个项目创建独立的 Python 环境,并能够轻松切换不同项目的 Python 版本,Pyenv 是一个不错的选择。

  • 集成 Virtualenvwrapper: 对于需要更多虚拟环境管理功能的项目,结合 Pyenv 和 Virtualenvwrapper 可以提供更灵活的解决方案。

5. 使用 Pipenv

5.1 安装 Pipenv
pip install pipenv
5.2 使用 Pipenv

Pipenv 是一个用于 Python 项目依赖管理和虚拟环境创建的工具。以下是使用 Pipenv 创建虚拟环境的步骤:

pipenv --python 3.8.5

这将会在当前项目目录下创建一个虚拟环境,并指定使用 Python 3.8.5 版本。Pipenv 会自动创建一个 Pipfile 文件,用于记录项目的依赖信息。

5.3 Pipenv 的优势和限制
优势:
  1. 简化依赖管理: Pipenv 通过 PipfilePipfile.lock 简化了项目的依赖管理,使得依赖的安装和版本控制更为直观。

  2. 自动创建虚拟环境: 使用 pipenv --python 命令可以自动创建虚拟环境,并将其与项目绑定在一起,实现了项目和虚拟环境的无缝集成。

  3. 快速切换 Python 版本: 支持在项目级别轻松切换 Python 版本,确保不同项目可以使用其所需的 Python 版本。

  4. 智能依赖解析: Pipenv 使用了智能算法,确保安装的依赖包满足所有的版本约束,避免了版本冲突的问题。

限制:
  1. 学习曲线: 对于初学者来说,Pipenv 的一些概念和命令可能需要一些时间来学习和理解。

  2. 不适用于所有场景: 对于一些复杂的项目结构或者特殊需求,Pipenv 可能无法涵盖所有场景,需要慎重选择。

5.4 适用场景
  • 简化依赖管理: Pipenv 适用于需要简化 Python 项目依赖管理的场景,特别是对于那些有大量第三方库依赖的项目。

  • 自动化虚拟环境: 如果你希望项目的虚拟环境与项目本身一同存在,并能够轻松管理,Pipenv 提供了自动创建和管理虚拟环境的功能。

  • 快速切换 Python 版本: 对于需要在不同项目中使用不同 Python 版本的场景,Pipenv 提供了便捷的方式。

5.5 Pipenv 常用命令

以下是一些 Pipenv 常用命令,用于项目的依赖管理和虚拟环境操作:

  • 安装项目依赖: 运行以下命令安装项目中定义的依赖包。

    pipenv install
    
  • 安装开发环境依赖: 安装开发环境依赖,包括测试工具和其他开发时需要的包。

    pipenv install --dev
    
  • 进入虚拟环境: 使用以下命令可以进入项目的虚拟环境。

    pipenv shell
    
  • 运行命令: 使用以下命令在虚拟环境中运行命令。

    pipenv run <command>
    
  • 列出依赖包: 查看项目中安装的所有依赖包。

    pipenv graph
    

6. 使用 Conda

6.1 安装 Conda

Conda 是一个开源的包管理和环境管理系统,可用于安装和管理多个软件包及其依赖关系。你可以选择安装 Miniconda(最小安装版)或 Anaconda(集成大量科学计算库的发行版)。

6.2 使用 Conda

安装完成 Conda 后,你可以通过以下命令创建一个新的虚拟环境,并指定 Python 版本:

conda create --name myenv python=3.8.5

这将在 Conda 环境中创建一个名为 myenv 的虚拟环境,并使用 Python 3.8.5 版本。你可以根据项目需求选择不同的 Python 版本。

6.3 Conda 的优势和限制
优势:
  1. 跨平台支持: Conda 支持 Windows、macOS 和 Linux 等多个平台,确保项目在不同操作系统上的一致性。

  2. 强大的依赖解析: Conda 使用强大的依赖解析算法,确保安装的软件包及其依赖关系之间不会发生冲突。

  3. 科学计算库集成: Anaconda 发行版集成了大量科学计算和数据科学库,适用于数据科学和机器学习项目。

  4. 环境管理: Conda 可以轻松创建、导出、列出、移除和更新环境,方便项目隔离和版本控制。

限制:
  1. 包的更新速度慢: Conda 的软件包更新速度相对较慢,可能无法及时获取到最新版本的某些软件包。

  2. 包的数量不如 PyPI: Conda 的包数量相对较少,尤其是在非科学计算领域,可能无法找到某些常用的包。

  3. 不适合所有场景: 对于小型项目或纯 Python 项目,使用 Conda 可能显得过于沉重。

6.4 适用场景
  • 科学计算和数据科学项目: Conda 特别适用于需要大量科学计算和数据科学库的项目,例如使用 NumPy、Pandas、SciPy 等的数据分析项目。

  • 跨平台项目: 如果项目需要在多个操作系统上运行,Conda 提供了跨平台的支持,确保项目在不同系统上的一致性。

  • 环境隔离和版本控制: Conda 提供了强大的环境管理功能,适用于需要隔离项目依赖和进行版本控制的场景。

6.5 Conda 常用命令

探索Miniconda3:简单、灵活的Python环境和软件包管理利器

以下是一些 Conda 常用命令,用于环境管理和软件包操作:

  • 激活环境: 进入创建的虚拟环境。

    conda activate myenv
    
  • 安装软件包: 安装指定的软件包。

    conda install package_name
    
  • 列出已安装的软件包: 查看当前环境中已经安装的所有软件包。

    conda list
    
  • 创建环境文件: 导出当前环境的配置信息,以便在其他地方重现相同的环境。

    conda env export > environment.yml
    
  • 从环境文件创建环境: 使用环境文件创建新的虚拟环境。

    conda env create -f environment.yml
    

7. 使用 Poetry

7.1 安装 Poetry
pip install poetry
7.2 使用 Poetry

Poetry 是一个用于 Python 项目依赖管理和项目构建的工具。以下是使用 Poetry 创建虚拟环境和管理项目依赖的步骤:

poetry new myproject  # 创建一个新项目(如果尚未创建)
cd myproject
poetry install       # 创建并激活虚拟环境,并安装项目依赖
7.3 Poetry 的优势和限制
优势:
  1. 简化依赖管理: Poetry 使用 pyproject.toml 文件来管理项目的依赖关系,简化了依赖管理的过程。

  2. 虚拟环境一体化: Poetry 会自动为每个项目创建和管理虚拟环境,确保项目的依赖和环境隔离。

  3. 项目构建和发布: Poetry 不仅用于依赖管理,还可以用于项目构建和发布,使得整个开发过程更为一体化。

  4. 可读性和易用性: Poetry 的配置文件采用 TOML 格式,易读易写。并且 Poetry 的命令设计简洁清晰,方便使用。

限制:
  1. 相对年轻: 相对于其他工具,Poetry 是一个相对年轻的项目,可能在某些方面还没有其他工具那么成熟。

  2. 社区支持: 虽然 Poetry 在不断发展,但相比一些老牌工具,其社区支持可能相对较小。

7.4 适用场景
  • 新项目的依赖管理: Poetry 适用于新项目的依赖管理,特别是对于小型到中型的 Python 项目。

  • 虚拟环境集成: 如果你希望依赖管理和虚拟环境管理更为一体化,Poetry 提供了这样的支持。

  • 构建和发布项目: Poetry 提供了构建和发布项目的功能,适用于需要一体化解决方案的项目。

7.5 Poetry 常用命令

以下是一些 Poetry 常用命令,用于项目的依赖管理和项目操作:

  • 安装依赖: 安装项目中定义的依赖包。

    poetry install
    
  • 添加依赖: 添加新的依赖包到项目。

    poetry add package_name
    
  • 创建虚拟环境: 创建并激活项目的虚拟环境。

    poetry shell
    
  • 运行命令: 在虚拟环境中运行项目中的命令。

    poetry run <command>
    
  • 构建项目: 构建项目,生成 distribution 包。

    poetry build
    
  • 发布项目: 发布项目到 PyPI。

    poetry publish
    

8. Direnv

8.1 安装 Direnv
pip install direnv
8.2 使用 Direnv

Direnv 是一个用于自动加载和卸载环境变量的实用工具,它可以与不同的 Shell 配合使用。以下是使用 Direnv 创建和激活虚拟环境的步骤:

  1. 首先,使用 direnv allow 命令允许 Direnv 执行。这将创建一个名为 .envrc 的文件,用于配置环境变量。

    direnv allow
    
  2. 打开 .envrc 文件,并添加以下内容:

    layout python python3.8.5
    

    这将指定使用 Python 3.8.5 版本,并配置虚拟环境。

  3. 在项目目录中,运行 direnv allow 以激活配置的虚拟环境。

    direnv allow
    
8.3 Direnv 的优势和限制
优势:
  1. 自动加载环境变量: Direnv 可以自动加载和卸载项目特定的环境变量,无需手动执行激活和退出命令。

  2. 与不同 Shell 兼容: Direnv 可以与各种 Shell 兼容,包括 Bash、Zsh 等,适用于不同的开发环境。

  3. 轻量级: Direnv 是一个轻量级工具,容易安装和配置,不需要额外的依赖。

限制:
  1. 环境配置相对简单: 相比某些专门的虚拟环境管理工具,Direnv 的环境配置相对简单,可能不适用于复杂的项目需求。

  2. 对 Shell 的依赖性: Direnv 对于环境变量的加载和卸载依赖于所使用的 Shell,可能在一些特殊情况下出现不一致性。

8.4 适用场景
  • 轻量级项目: 对于小型项目,不涉及复杂的依赖管理和环境配置的场景,Direnv 提供了一个简单而有效的解决方案。

  • 自动加载环境变量: 如果项目需要自动加载特定的环境变量,而无需手动执行激活和退出命令,Direnv 是一个不错的选择。

8.5 Direnv 常用命令

以下是一些 Direnv 常用命令,用于配置和管理环境变量:

  • 允许 Direnv: 创建并允许 Direnv 执行。

    direnv allow
    
  • 配置环境变量: 打开 .envrc 文件,并配置环境变量。

    layout python python3.8.5
    
  • 卸载 Direnv: 禁用 Direnv 执行。

    direnv deny
    
8.6 总结

Direnv 是一个轻量级的环境变量管理工具,通过自动加载和卸载项目特定的环境变量,提供了一种简单而灵活的虚拟环境管理方式。它适用于小型项目和对于自动加载环境变量有需求的场景。在选择使用 Direnv 时,需要根据项目规模和需求做出合适的决策。接下来,我们将介绍另一款虚拟环境管理工具 - Pew。

9. Pew

9.1 安装 Pew
pip install pew
9.2 使用 Pew

Pew 是一个用于管理 Python 虚拟环境的工具。以下是使用 Pew 创建和激活虚拟环境的步骤:

  1. 首先,安装 Pew:

    pip install pew
    
  2. 创建并激活虚拟环境:

    pew new myenv
    
9.3 Pew 的优势和限制
优势:
  1. 轻量级: Pew 是一个轻量级的虚拟环境管理工具,易于安装和使用。

  2. 简化激活命令: 使用 pew new 命令可以更简便地创建并激活虚拟环境。

  3. 多环境管理: Pew 支持创建和管理多个虚拟环境,方便在不同项目中切换。

限制:
  1. 功能相对简单: 相对于其他一些虚拟环境管理工具,Pew 的功能相对简单,可能不适用于一些复杂的项目需求。

  2. 社区支持: Pew 的社区支持相对较小,可能在一些特定场景下缺乏一些高级功能。

9.4 适用场景
  • 轻量级项目: 对于小型项目,不涉及复杂的依赖管理和环境配置的场景,Pew 提供了一个简单而有效的解决方案。

  • 简化激活命令: 如果你希望通过简单的命令来创建和激活虚拟环境,Pew 是一个可以考虑的选择。

9.5 Pew 常用命令

以下是一些 Pew 常用命令,用于创建和管理虚拟环境:

  • 创建虚拟环境: 创建并激活一个名为 myenv 的虚拟环境。

    pew new myenv
    
  • 激活虚拟环境: 激活已经存在的虚拟环境。

    pew workon myenv
    
  • 列出虚拟环境: 列出所有已创建的虚拟环境。

    pew ls
    
  • 退出虚拟环境: 弹出虚拟环境。

    deactivate
    
  • 删除虚拟环境: 删除指定的虚拟环境。

    pew rm myenv
    

上述方法会自动创建在C盘C:\Users\admin\ .virtualenvs,如果你想创建在指定路径
pew 在 Windows 系统上可能会受到权限的限制,导致无法在某些目录下创建虚拟环境。您可以尝试以下步骤来规避这个问题:

  1. 以管理员身份运行 PowerShell: 在 PowerShell 上右键单击,并选择“以管理员身份运行”:

    Start-Process powershell -Verb runAs
    
  2. 在管理员 PowerShell 中运行 pew 命令:

    pew new E:\PRODUCE\BS\myenv
    

这样以管理员权限运行 PowerShell 可能会避免权限问题。如果问题仍然存在,还可以尝试将虚拟环境创建在您有权限的其他目录。
在这里插入图片描述
在这里插入图片描述

10. Virtualfish

10.1 安装 Virtualfish
pip install virtualfish
10.2 使用 Virtualfish

Virtualfish 是 Fish shell 下的虚拟环境管理工具。以下是使用 Virtualfish 创建和激活虚拟环境的步骤:

  1. 首先,安装 Virtualfish:

    pip install virtualfish
    
  2. 创建并激活虚拟环境:

    vf new myenv
    
10.3 Virtualfish 的优势和限制
优势:
  1. Fish Shell 支持: Virtualfish 专为 Fish Shell 设计,提供了与 Fish Shell 集成的虚拟环境管理。

  2. 简便激活命令: 使用 vf new 命令可以更简便地创建并激活虚拟环境。

  3. Fish Shell 生态: 对于喜欢使用 Fish Shell 的开发者来说,Virtualfish 提供了与该 Shell 生态系统的良好集成。

限制:
  1. Fish Shell 依赖: Virtualfish 仅在 Fish Shell 中可用,对于其他 Shell 用户可能不适用。

  2. 相对小众: 相对于其他虚拟环境管理工具,Virtualfish 的用户群体相对较小,可能在一些特定场景下缺乏一些高级功能。

10.4 适用场景
  • Fish Shell 用户: 如果你是 Fish Shell 的用户,并希望在该 Shell 下管理虚拟环境,Virtualfish 是一个很好的选择。

  • 简便激活命令: 如果你对于创建和激活虚拟环境希望有更简便的命令,Virtualfish 提供了一种直观的方式。

10.5 Virtualfish 常用命令

以下是一些 Virtualfish 常用命令,用于创建和管理虚拟环境:

  • 创建虚拟环境: 创建并激活一个名为 myenv 的虚拟环境。

    vf new myenv
    
  • 激活虚拟环境: 激活已经存在的虚拟环境。

    vf myenv
    
  • 列出虚拟环境: 列出所有已创建的虚拟环境。

    vf ls
    
  • 删除虚拟环境: 删除指定的虚拟环境。

    vf rm myenv
    
10.6 总结

Virtualfish 是一个专为 Fish Shell 设计的虚拟环境管理工具,适用于喜欢使用 Fish Shell 的开发者。在选择使用 Virtualfish 时,需要考虑你的 Shell 偏好以及项目需求。接下来,我们将介绍另一款虚拟环境管理工具 - Hatch。

11. Hatch

11.1 安装 Hatch
pip install hatch
11.2 使用 Hatch

Hatch 是一个用于 Python 项目的开发和管理工具。以下是使用 Hatch 创建和激活虚拟环境的步骤:

  1. 首先,安装 Hatch:

    pip install hatch
    
  2. 创建并激活虚拟环境:

    hatch myenv
    
11.3 Hatch 的优势和限制
优势:
  1. 项目管理: Hatch 提供了一种简单而直观的方式来初始化和管理 Python 项目。

  2. 快速创建: 使用 hatch 命令可以快速创建项目并设置虚拟环境。

  3. 简化命令: 对于项目的创建、管理和虚拟环境的设置,Hatch 提供了一组简化的命令,使得这些操作更加便捷。

限制:
  1. 相对小众: 相对于其他虚拟环境管理工具,Hatch 的用户群体相对较小,可能在一些特定场景下缺乏一些高级功能。

  2. 功能相对简单: Hatch 主要关注项目初始化和虚拟环境的创建,相对于其他一些工具,其功能相对简单。

11.4 适用场景
  • 快速项目初始化: 如果你希望通过一个简单的命令快速初始化 Python 项目并设置虚拟环境,Hatch 提供了一种简便的方式。

  • 简化项目命令: 对于一些不涉及复杂依赖管理和环境配置的小型项目,Hatch 提供了一个简单而直观的管理工具。

11.5 Hatch 常用命令

以下是一些 Hatch 常用命令,用于创建和管理项目以及虚拟环境:

  • 创建项目: 在当前目录创建一个新项目。

    hatch new myproject
    
  • 初始化项目: 进入项目目录并初始化项目。

    cd myproject
    hatch init
    
  • 创建虚拟环境: 使用 hatch 命令创建虚拟环境。

    hatch myenv
    
  • 激活虚拟环境: 激活已经存在的虚拟环境。

    hatch shell
    

12. Conda-Forge

12.1 安装 Conda-Forge

首先,安装 Conda-Forge 中的 conda-env 包:

conda install -c conda-forge conda-env
12.2 使用 Conda-Forge

Conda-Forge 是 Conda 的一个社区驱动的软件源,提供了大量的开源软件包。以下是使用 Conda-Forge 进行虚拟环境管理的步骤:

  1. 首先,安装 Conda-Forge 中的 conda-env 包:

    conda install -c conda-forge conda-env
    
  2. 创建并激活虚拟环境:

    conda env create -n myenv python=3.8.5
    
12.3 Conda-Forge 的优势和限制
优势:
  1. 丰富的软件包: Conda-Forge 提供了丰富的开源软件包,覆盖了各种领域的工具和库。

  2. 跨平台支持: Conda-Forge 支持 Windows、macOS 和 Linux,使得在不同操作系统上管理虚拟环境更加方便。

  3. 依赖解决: Conda 的依赖解决功能可以确保软件包之间的兼容性,简化了依赖管理的复杂性。

限制:
  1. 环境创建相对慢: 与一些其他虚拟环境管理工具相比,Conda-Forge 在创建环境时可能需要较长时间。

  2. 相对庞大: Conda-Forge 安装包的体积可能较大,这可能在一些资源受限的环境中产生一些影响。

12.4 适用场景
  • 丰富的软件包需求: 如果你的项目需要使用大量的开源软件包,而这些软件包在 Conda-Forge 上都有支持,那么使用 Conda-Forge 是一个不错的选择。

  • 跨平台开发: 如果你需要在不同操作系统上进行开发,并且希望统一管理虚拟环境,Conda-Forge 提供了良好的跨平台支持。

12.5 Conda-Forge 常用命令

以下是一些 Conda-Forge 常用命令,用于创建和管理虚拟环境:

  • 创建虚拟环境: 使用 conda env create 命令创建虚拟环境。

    conda env create -n myenv python=3.8.5
    
  • 激活虚拟环境: 使用 conda activate 命令激活虚拟环境。

    conda activate myenv
    
  • 列出虚拟环境: 列出所有已创建的虚拟环境。

    conda env list
    
  • 删除虚拟环境: 使用 conda env remove 命令删除指定的虚拟环境。

    conda env remove -n myenv
    

13. 总结

13.1 不同方式的优劣比较

在本文中,我们介绍了多种创建和管理 Python 虚拟环境的方式,每种方式都有其独特的优势和限制。以下是对这些方式的简要比较:

  1. venv 模块:

    • 优势: 轻量级,易于使用,无需额外安装。
    • 限制: 不支持 Python 2,环境隔离有限,不支持自定义配置。
  2. Virtualenv 和 Virtualenvwrapper:

    • 优势: 多环境管理,简化激活命令,依赖管理。
    • 限制: 仅支持 bash 和 zsh,额外学习成本。
  3. Pyenv 和 Pyenv-virtualenvwrapper:

    • 优势: 灵活的 Python 版本管理,多环境管理。
    • 限制: 相对较大的学习曲线。
  4. Pipenv:

    • 优势: 统一依赖管理和环境配置,包括开发和部署。
    • 限制: 部分用户对其复杂性有不同看法。
  5. Conda 和 Conda-Forge:

    • 优势: 丰富的软件包,跨平台支持,依赖解决。
    • 限制: 环境创建相对慢,相对庞大的安装包。
  6. Poetry:

    • 优势: 简化的配置文件,统一依赖管理和项目初始化。
    • 限制: 相对较新,可能不适用于所有项目。
  7. Direnv、Pew、Virtualfish、Hatch:

    • 优势: 提供了额外的环境管理和配置功能。
    • 限制: 小众,功能相对简单,适用场景有限。
13.2 如何选择适当的创建虚拟环境方式

选择适当的方式取决于多个因素,包括项目规模、依赖管理需求、开发团队熟悉度和个人偏好。在做出选择时,可以考虑以下几个方面:

  • 项目规模: 对于小型项目,使用轻量级的工具可能更为合适。对于大型项目,可能需要更强大的依赖管理和环境隔离功能。

  • 依赖关系: 如果项目需要大量的第三方库和工具,并且这些库有复杂的依赖关系,可以考虑使用具有良好依赖解决功能的工具,如 Conda。

  • 团队熟悉度: 考虑团队成员对于不同工具的熟悉度。选择团队熟悉的工具可以提高整个团队的效率。

  • 跨平台需求: 如果项目需要在不同操作系统上运行,选择提供跨平台支持的工具可能更加方便。

  • 个人偏好: 有些开发者更喜欢简洁和灵活的工具,而有些人可能更愿意使用提供更多功能的工具。

在实际应用中,有时候也可以结合多种工具的使用,根据具体需求选择最合适的方式。在不同的项目和阶段,灵活选择虚拟环境管理工具将有助于提高开发效率和项目的可维护性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1254980.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言线性表的实现(详解)

数据结构之线性表 ​ 线性表的基本概念&#xff1a;线性表是由0个或者多个数据元素的有限序列 ​ 特性是&#xff1a; ​ 1&#xff1a;数据元素之间都是有顺序的 ​ 2&#xff1a;数据元素的个数是有限的&#xff0c; ​ 3&#xff1a;数据元素的类型是相同的 ​ 性质是&…

二进制编辑器hexedit的安装及使用

Hexedit 同时以 ASCII 和十六进制显示文件 安装 终端输入hexedit回车&#xff0c;如果没安装&#xff0c;会提示让输入 sudo apt-get install hexedit 照着输入命令&#xff0c;安装。安装完成后&#xff0c;cd到一个有二进制文件的目录下&#xff0c;输入hexedit命令回车 再…

激光雷达SLAM(一)------初始激光雷达SLAM

专栏目的及认识激光雷达SLAM 一、专栏目的二、初始激光雷达SLAM1、激光雷达SLAM算法相关知识点2、SLAM常见问题[^2]3、激光雷达SLAM的需求点4、RTK在SLAM中的作用5、激光雷达视觉紧耦合图优化滤波紧耦合 一、专栏目的 大家好&#xff01;介绍一下博主自己&#xff0c;感知算法工…

在云服务器上搭建个人版chatGPT及后端Spring Boot集成chat GPT

原创/朱季谦 本文分成两部分&#xff0c;包括【国内服务器上搭建chat GPT】和【后端Spring Boot集成chat GPT】。 无论是在【国内服务器上搭建chat GPT】和【后端Spring Boot集成chat GPT】&#xff0c;两个方式都需要魔法访问&#xff0c;否则是无法正常使用的&#xff0c;即…

Java Flight Record 详解

核心概念 Java Flight Record 提供一个低开销的数据收集框架&#xff0c;用于对 Java 应用程序和 HotSpot JVM 进行故障排除。Flight Recorder 记录源自应用程序、JVM和操作系统的事件 Flight Record&#xff0c;顾名思义&#xff0c;相当于飞机黑匣子里保存的飞行记录 事件 …

vue3+ts mitt的使用

安装mitt :npm i mitt -Smain.ts: import mitt from mittconst Mit mitt();declare module vue {export interface ComponentCustomProperties{$Bus:typeof Mit} } app.config.globalProperties.$BusMit在A组件中使用 <template><div><h1>我是A<…

Leetcode—160.相交链表【简单】

2023每日刷题&#xff08;四十一&#xff09; Leetcode—160.相交链表 算法思想 两个链表的节点之和是相等的 如果两个链表相交&#xff0c;那么相交点之后的长度是相同的 我们需要做的事情是&#xff0c;让两个链表从同距离末尾同等距离的位置开始遍历。这个位置只能是较短…

【高可用架构】Haproxy 和 Keepalived 的区别

Haproxy 和 Keepalived 的区别 1.负载均衡器介绍2.Haproxy 和 Keepalived 的基本概念和特点2.1 Haproxy2.2 Keepalived 3.Haproxy 和 Keepalived 的区别3.1 功能上的区别3.2 架构上的区别3.3 配置上的区别 4.总结 1.负载均衡器介绍 负载均衡器是一种解决高并发和高可用的常用的…

【JavaSE】:数据类型

数据类型 一.总体概论二.java里与c的区别1.float2.char3.boolen 三.类型转换四.String类型 一.总体概论 在Java中数据类型主要分为两类&#xff1a;基本数据类型和引用数据类型。 不论是在16位系统还是32位系统&#xff0c;int都占用4个字节&#xff0c;long都占8个字节 。 整…

NAS非接入层协议学习(二)

在无线通信网络中 NAS (Non-Access Stratum)做为非接入层是演进分组系统(或5G核心网)中的一组协议。NAS用于在用户设备(UE)和移动管理实体(MME/AMF)之间传送非无线电信令&#xff0c;以实现NR/LTE/E-UTRAN接入。 NAS在协议栈中是控制面的最高层。 NAS协议分组中可以将其分为两…

3款免费的语音视频转文本AI神器

最近有很多粉丝让我出一期关于语音转文本的免费AI神器&#xff0c;毕竟这类工具在学习和工作中经常会用到&#xff0c;那今天就给大家安排。 我亲测了好几款软件之后&#xff0c;最终评选留下了三款 剪映hugging face飞书妙记 接下来一一给大家讲解 1.剪映 剪映其实是一款视…

因式分解的几何意义

本来准备和女儿一起玩一道几何题&#xff0c;想想还是算了&#xff0c;不如讲点更有趣的。 任何因式分解都是在堆积木&#xff0c;不信你看&#xff1a; 二项式定理&#xff0c;洋灰三角&#xff0c;都是面积&#xff0c;体积&#xff0c;超维体积的拼接&#xff0c;一个大超…

Python | CAP - 累积精度曲线分析案例

CAP通常被称为“累积精度曲线”&#xff0c;用于分类模型的性能评估。它有助于我们理解和总结分类模型的鲁棒性。为了直观地显示这一点&#xff0c;我们在图中绘制了三条不同的曲线&#xff1a; 一个随机的曲线&#xff08;random&#xff09;通过使用随机森林分类器获得的曲线…

leetcode_828_统计子串中的唯一字符

题意&#xff1a;所有子串中单个字符出现的次数和 问题转化&#xff1a;对于串中的每个字符&#xff0c;只包含其一次的所有子串的个数和 关于求只包含某位置字符一次的子串个数 class Solution { public:int uniqueLetterString(string s) {/* ...A...A...A...*/int n s.size…

【C++】类型转换 ② ( C++ 静态类型转换 static_cast | C 语言隐式转换弊端 | 代码示例 )

文章目录 一、静态类型转换 static_cast1、C 静态类型转换 static_cast2、C 语言隐式转换弊端3、代码示例 在之前写过一篇 C 类型转换的博客 【C 语言】类型转换 ( 转换操作符 | const_cast | static_cast | dynamic_cast | reinterpret_cast | 字符串转换 ) , 简单介绍了 C 类…

linklab phase1 更简单的方法

直接反汇编phase1.o&#xff0c;看eax中是0x21&#xff0c;0x21在数据域中&#xff0c;直接把从第21个字节的内容改为0000000000即可。

【python】--文件/文件夹读写及操作

目录 一、文件读写1、文件读写代码示例 二、文件/文件夹操作1、代码示例 一、文件读写 读写文件就是请求操作系统打开一个文件对象&#xff08;通常称为文件描述符&#xff09;&#xff0c;然后通过操作系统提供的接口从这个文件对象中读取数据&#xff08;读文件&#xff09;…

【如何修改输入法切换键】

操作 以win10为例&#xff0c;点开系统设置&#xff0c;选择时间和语言 选择语言&#xff0c;找到首选语言中的中文&#xff0c;点击选项 点击其中的微软输入法 选择按键 在按键中进行输入法切换按键的选择

Atcoder Beginner Contest 330——A~F题

A - Counting Passes Description Problem Statement N N N people labeled 1 , 2 , … , N 1,2,\dots,N 1,2,…,N took an exam, and person i i i scored A i A_i Ai​ points. Only those who scored at least L L L points pass this exam. Determine how many peopl…

【Linux】第二十一站:文件(一)

文章目录 一、共识原理二、C系列文件接口三、从C过渡到系统&#xff1a;文件系统调用四、访问文件的本质 一、共识原理 文件 内容 属性 文件分为打开的文件 和 没打开的文件 打开的文件&#xff1a;是谁打开的&#xff1f;是进程&#xff01;----所以研究打开的文件本质是研…