ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

macOS-python项目虚拟环境管理

macOS-python项目虚拟环境管理

众所周知,python版本比较多,为了避免的不同版本项目开发存在冲突,在虚拟环境中进行项目开发,可以避免因为python版本不同带来的冲突,本文主要对python项目开发几种虚拟环境进行整理汇总。

一、venv 创建虚拟环境

命令格式:

python3 -m venv /path/to/new/virtual/environment

其中,/path/to/new/virtual/environment是虚拟环境的完整路径,最后的environment是环境名称。

说明:

  • venv是 Python 自带的虚拟环境创建工具,无需安装,直接可以用
  • 使用上述命令创建的虚拟环境,其 Python 解释器版本与当前系统中生效的 Python 版本一致。例如,当前终端执行 python --version 显示的 Python 版本为 3.13.13,则虚拟环境中的python解释器版本也是 3.13.13。
  • 创建虚拟环境后,在 IDE(如 PyCharm、VSCode)中创建新项目时,可以通过“自定义”或“选择已有解释器”的方式,指定使用该虚拟环境中的 Python 解释器。

二、conda 创建虚拟环境

Conda 是一个开源的包管理和环境管理系统,支持 Python、Java等多种语言。它不仅可以管理 Python 包,还可以管理非 Python 的依赖项,是数据科学和机器学习领域的常用工具。本文不对conda工具的安装进说明。

1. Conda 环境管理命令

1.1 创建虚拟环境

创建指定 Python 版本的环境:

conda create --name myenv python=3.9

创建环境并指定包:

conda create --name myenv python=3.9 numpy pandas matplotlib

1.2 激活与停用环境

激活环境:

conda activate myenv

停用环境:

conda deactivate

1.3 查看环境列表

#第一种方式 conda env list #第二种方式 conda info --envs

列表中带 * 标识的是当前生效的环境

1.4 管理环境中的包

安装包:

conda install numpy pandas #指定版本 conda install numpy=1.24.3 #更新包 conda update numpy

更新包:

conda update numpy

更新所有包:

conda update --all

卸载包:

conda remove numpy

1.5 导出与复制环境

导出环境配置:

conda env export > environment.yml

复制环境:

conda create --name newenv --clone oldenv

1.6 删除环境

conda env remove --name myenv

2. Conda 与 venv 的主要区别

2.1 包管理能力

  • Conda:不仅管理 Python 包,还能管理非 Python 依赖(如 C/C++ 库、系统工具等)。通过 conda-forge 等渠道提供预编译的二进制包,解决依赖冲突能力更强。
  • venv:仅管理 Python 包,依赖 pip 进行包安装,无法处理非 Python 依赖。

2.2 跨语言支持

  • Conda:原生支持多语言环境管理,可以为 R、Java、C++ 等项目创建独立环境。
  • venv:仅针对 Python 环境,不支持其他语言。

2.3 Python 版本管理

  • Conda:可以在创建环境时指定任意可用的 Python 版本,不依赖系统已安装的 Python。
  • venv:创建的虚拟环境 Python 版本与当前系统激活的 Python 版本一致,无法创建不同 Python 版本的环境。

2.4 环境隔离程度

  • Conda:环境完全独立,包括 Python 解释器、标准库和所有依赖包。
  • venv:共享系统 Python 解释器和标准库,只隔离第三方包。

2.5 使用场景

  • Conda:适合数据科学、机器学习项目,需要复杂依赖(如 CUDA、MKL 等)或跨语言开发。
  • venv:适合纯 Python Web 开发、脚本编写等简单项目,轻量级且无需额外安装。

2.6 性能与存储

  • Conda:环境占用空间较大,因为包含完整的 Python 解释器和依赖。
  • venv:环境更轻量,创建速度快,占用空间小。

三、Virtualenv 管理虚拟环境

Virtualenv 是一个独立的 Python 虚拟环境创建工具,比 venv 更早出现,支持 Python 2 和 Python 3。它提供了比 venv 更灵活的配置选项,是许多老项目和跨版本项目的常用选择。

1. 工具安装

Virtualenv 需要通过 pip 安装:

pip install virtualenv

如果系统中有多个 Python 版本,可以使用特定版本的 pip 安装:

pip3 install virtualenv # 或 python3 -m pip install virtualenv

2. 创建虚拟环境

创建虚拟环境的基本命令格式如下:

virtualenv env_name

其中env_name是环境名称,会在当前目录下创建一个名为env_name的文件夹。

常用选项:

  • 指定 Python 解释器版本virtualenv -p /usr/bin/python3.8 env_name
  • 不安装 pipvirtualenv --no-pip env_name
  • 不安装 setuptoolsvirtualenv --no-setuptools env_name
  • 继承系统包virtualenv --system-site-packages env_name

3. 激活环境

激活 Virtualenv 环境需要执行环境目录下的激活脚本:

# 进入创建环境所在目录 cd env_name #执行激活脚本(Linux/macOS) source bin/activate #Windows 系统 env_name\Scripts\activate

激活成功后,命令行提示符前会显示环境名称(env_name)

4. 退出环境

退出当前虚拟环境非常简单:

deactivate

执行后即可返回到系统默认的 Python 环境。

5. Virtualenv 与 venv、conda 的对比

5.1 与 venv 的对比

  • 兼容性:Virtualenv 支持 Python 2 和 Python 3,而 venv 仅支持 Python 3.3+
  • 灵活性:Virtualenv 提供更多配置选项(如不安装 pip、继承系统包等)
  • 安装方式:Virtualenv 需要额外安装,venv 是 Python 标准库的一部分
  • 性能:两者在创建速度和资源占用上相差不大

5.2 与 conda 的对比

  • 包管理:Virtualenv 依赖 pip 管理 Python 包,conda 可以管理 Python 和非 Python 依赖
  • Python 版本管理:Virtualenv 需要系统已安装对应 Python 版本,conda 可以独立管理 Python 版本
  • 跨语言支持:Virtualenv 仅支持 Python,conda 支持多语言环境
  • 使用场景:Virtualenv 适合传统 Python 项目,conda 适合数据科学和机器学习项目

6. 使用建议

  • 对于 Python 3.3+ 的新项目,优先使用 venv(无需安装)
  • 如果需要支持 Python 2 或需要更灵活的配置,选择 Virtualenv
  • 对于数据科学、机器学习或需要复杂依赖的项目,推荐使用 conda
  • 团队协作时,建议统一虚拟环境工具,避免环境不一致问题

总结:Conda 功能更强大,适合复杂项目和跨语言开发;venv 更轻量简单,适合纯 Python 基础项目。选择哪种工具取决于项目需求和个人偏好。

ps:感谢阅读!✍️本文为原创实战总结,文中方案均经过本地测试验证。 码字不易,内容有帮助可以随手支持,金额随意,不打赏也完全不影响正常阅读,知识分享始终开放。

返回列表