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 matplotlib1.2 激活与停用环境
激活环境:
conda activate myenv停用环境:
conda deactivate1.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 numpy1.5 导出与复制环境
导出环境配置:
conda env export > environment.yml复制环境:
conda create --name newenv --clone oldenv1.6 删除环境
conda env remove --name myenv2. 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 virtualenv2. 创建虚拟环境
创建虚拟环境的基本命令格式如下:
virtualenv env_name其中env_name是环境名称,会在当前目录下创建一个名为env_name的文件夹。
常用选项:
- 指定 Python 解释器版本:
virtualenv -p /usr/bin/python3.8 env_name - 不安装 pip:
virtualenv --no-pip env_name - 不安装 setuptools:
virtualenv --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:感谢阅读!✍️本文为原创实战总结,文中方案均经过本地测试验证。 码字不易,内容有帮助可以随手支持,金额随意,不打赏也完全不影响正常阅读,知识分享始终开放。
