怎么用conda创建指定版本的Python虚拟环境

Theo
Theo
发布时间:2026-11-04| 3人浏览过
原创

详细讲解如何使用 Conda 命令行创建指定 Python 版本的虚拟环境,剖析隔离机制与底层原理,提供从环境预检、创建、激活到双重验证的标准四步法,并针对 Solving 卡死、版本未找到等常见故障提供实战解决方案。

在终端中执行 conda create -n <环境名称> python=<版本号>,即可创建包含独立 Python 解释器的虚拟环境。例如需要 Python 3.10 环境时,运行 conda create -n py310_env python=3.10,并在提示确认时输入 y。创建完成后通过 conda activate py310_env 激活环境。这套操作彻底将指定版本的 Python 解释器、系统动态链接库以及后续安装的三方包隔绝在专用目录内,有效规避版本依赖冲突。

怎么用conda创建指定版本的Python虚拟环境
图 0:Conda 指定版本 Python 虚拟环境的核心命令与主要特性概览

一、核心原理:Conda 虚拟环境与 Python 版本绑定的本质

很多初学者容易将 Conda 的虚拟环境与 Python 自带的 venv 或 virtualenv 混淆。在标准 venv 方案中,虚拟环境并不负责编译或分发 Python 解释器本身,它只是软链接或复制宿主系统中已经安装好的某个 Python 可执行文件。如果你的操作系统原本只有 Python 3.12,你就无法直接用 venv 凭空创建一个 Python 3.8 的环境。

而 Conda 是一个跨语言的通用包管理与环境管理系统。在 Conda 的设计架构里,Python 解释器本身被抽象为一个标准 Conda 二进制软件包(例如名为 python,具备特定的构建编号如 python=3.10.14=hxxxx)。因此,无论宿主系统当前装的是什么版本,甚至不论宿主系统是否预装了 Python,Conda 都能从云端仓库(Channels)直接下载目标版本的独立预编译二进制包,并将其完整部署到独立的环境目录树中。

怎么用conda创建指定版本的Python虚拟环境
图 1:Conda 根目录下的独立环境目录分布与解释器隔离机制

如上图所示,所有通过 Conda 创建的命名环境默认存放在 Conda 安装根目录下的 envs/ 子目录中(例如 ~/miniconda3/envs/my_env/ 或 ~/anaconda3/envs/my_env/)。每个环境拥有独立的:

  • 解释器主程序:位于 envs/<环境名>/bin/python(Windows 上为 envs\<环境名>\python.exe)。
  • 包隔离目录:位于 envs/<环境名>/lib/pythonX.Y/site-packages/,后续所有通过 conda install 或 pip install 安装的库都会严格限制在此目录内。
  • 二进制与 C/C++ 运行时:包含对应的 GCC 运行时、OpenSSL、CUDA Toolkit 及 BLAS 加速库,从根本上防止系统级库版本不兼容引发的崩溃。
为什么不应该直接在 base 环境中进行项目开发?
Conda 安装完成后自带一个名为 base 的默认环境,该环境承载着 Conda 客户端及其核心依赖(如 requests、libmamba、pycosat 等)。如果在 base 中随意安装、降级或升级第三方库,极易引起依赖求解器核心组件损坏,导致 conda 命令自身报错瘫痪。最佳实践是保持 base 环境纯净,为每个项目创建独立的指定版本环境。

二、创建指定版本环境的标准四步流程

在实际工程开发中,遵循一套标准化、可验证的操作顺序,能够确保创建出来的环境精准无误。整个过程由四个环节组成:

怎么用conda创建指定版本的Python虚拟环境
图 2:创建并激活指定 Python 版本虚拟环境的标准化执行流

步骤一:预检现有环境列表与云端支持

在创建之前,先确认拟使用的环境名称是否已被占用。在终端执行:

Bash / Zsh 终端输入conda env list
示例输出# conda environments:
#
base                  *  /Users/username/miniconda3
py39_nlp                 /Users/username/miniconda3/envs/py39_nlp

如果需要核对官方镜像源或当前配置的 Channel 中支持哪些具体的小版本构建,可以执行 conda search python 查看候选清单。

步骤二:执行创建命令与参数解析

使用 conda create 命令配合 -n(或 --name)与 python=<version> 指定目标版本。

Bash / Zsh 终端输入conda create -n py310_env python=3.10

这里 python=3.10 代表选择 3.10 分支下的最新补丁版本(如 3.10.14)。如果项目有极为苛刻的补丁版本限制,也可直接精确指定为 python=3.10.12。

执行命令后,Conda 依赖求解器(Solver)会进行依赖计算并打印待安装软件包列表,最后输出询问:

终端交互提示Proceed ([y]/n)?

此时键盘输入 y 并按下回车,Conda 会开始下载对应的 Python 运行时、pip、setuptools、wheel 等基础构件并解压链接。如果是在脚本或自动化流水线中运行,可添加 -y 参数自动同意:conda create -n py310_env python=3.10 -y。

指定存放路径替代环境名:
若希望将虚拟环境直接存放在当前项目目录内(方便随代码一并归档),可以使用 -p 或 --prefix 替代 -n:
conda create -p ./venv python=3.10
后续激活该环境时需指定路径:conda activate ./venv。

步骤三:激活与切换环境

环境创建完成后,系统会自动提示激活命令:

Bash / Zsh 终端输入conda activate py310_env

激活成功后,终端命令行最左侧的前缀括号会从 (base) 变为目标名称 (py310_env)。此时,当前终端子进程的 PATH 环境变量已被重写,首选路径指向了该环境的 bin(或 Scripts)目录。

步骤四:双重严谨验证(版本与路径)

切忌仅凭命令行前缀提示符判断当前 Python 状态,必须进行版本号与实际可执行文件绝对路径的双重校验:

Bash / Zsh 终端输入python --version
which python    # Windows 用户请输入: where python

预期正确输出Python 3.10.14
/Users/username/miniconda3/envs/py310_env/bin/python

若 which python 显示的路径包含 envs/py310_env/bin,表明虚拟环境已经成功接管当前的 Python 运行时;若依然指向 /usr/bin/python3 或 base 目录,则说明环境未能正确激活或环境变量被覆写。

三、高效开发必备的进阶管理操作

掌握以下扩展技巧,可以进一步提升日常工程开发与协作部署的效率。

1. 在创建时一并声明基础三方包

无需在环境创建完毕后再反复执行多次安装命令。在执行 conda create 时,可以直接在后面追加多个所需的三方依赖:

Bash / Zsh 终端输入conda create -n data_py311 python=3.11 numpy pandas scipy jupyter

这样做的好处是 Conda 求解器会在最初一步将 Python 版本与所有的基础科学计算包进行全局协同依赖解析,避免后续安装时产生依赖推翻重构。

2. 环境的克隆与安全升级测试

当需要对一个正在稳定运行的环境进行重大包升级(例如升级核心算法库版本),但又担心破坏现有配置时,可利用 --clone 参数实现毫秒级的完整环境镜像复制:

Bash / Zsh 终端输入conda create -n py310_backup --clone py310_env

由于 Conda 内部使用硬链接(Hard Link)机制,克隆过程极快,并且不会双倍消耗磁盘空间。测试完毕确认无误后再决定替换或删除。

3. 导出与跨机器复现环境(YAML)

向团队协同成员或生产服务器交付代码时,应使用配置文件固定环境结构:

Bash / Zsh 导出命令conda env export --no-builds > environment.yml

这里使用 --no-builds 参数可以剔除特定于单台机器平台的本地哈希编号,显著提升跨平台(如从 macOS 到 Linux)复现环境的兼容性。接收方仅需一行命令即可一比一还原:

Bash / Zsh 复现命令conda env create -f environment.yml

4. 环境停用与彻底删除清理

完成开发任务后,若要退回上级环境:

Bash / Zsh 终端输入conda deactivate

若某个环境已废弃需彻底从磁盘中抹除,必须先退出该环境,再执行 remove --all:

Bash / Zsh 终端输入conda remove -n py310_env --all

四、常见报错与关键排查方法

在创建指定版本 Python 环境时,网络问题、镜像源配置不当以及架构差异是导致失败的三大主因。下图梳理了对应的故障排查决策逻辑:

怎么用conda创建指定版本的Python虚拟环境
图 3:创建 Python 虚拟环境常见异常定位与解决决策树

问题一:Solving environment 阶段耗时极长或卡死

表现:命令行光标在 Examining ... 或 Solving environment: \ 处持续转动十几分钟无响应。

原因:Conda 默认使用的旧版 Python 求解器在解析多包冲突时回溯算法复杂度极高。

解决方案:推荐切换到现代化的 libmamba 高性能 C++ 求解器(Conda 23.10+ 已内置为推荐引擎):

Bash / Zsh 终端输入conda config --set solver libmamba

设置后再次执行创建命令,依赖解析耗时通常会由几分钟缩减至 3~5 秒内。

问题二:PackagesNotFoundError(找不到指定版本的 Python)

表现:终端提示 PackagesNotFoundError: The following packages are not available from current channels: - python=3.13。

原因:官方 defaults 仓库对于最新刚发布的 Python 小版本或老旧版本同步有延迟。

解决方案:使用社区维护最及时、构件最全的 conda-forge 频道指定下载:

Bash / Zsh 终端输入conda create -n py313_env python=3.13 -c conda-forge

问题三:Apple Silicon (M系列芯片) 平台的架构不兼容

表现:在 M1/M2/M3 芯片的 Mac 上创建早期 Python 版本(如 Python 3.7、3.8)时提示找不到包,或某些特定的遗留科学计算库无 osx-arm64 原生架构切片。

解决方案:可以通过环境变量强制指定 osx-64 架构,利用 macOS 的 Rosetta 2 模拟层创建纯净的 x86 环境:

macOS 跨架构创建指定环境CONDA_SUBDIR=osx-64 conda create -n x86_py38 python=3.8 -y
conda activate x86_py38
conda config --env --set subdir osx-64

第三行命令将该环境的内部配置永久锁定为 osx-64,使得后续在该环境中通过 conda 安装的任何库都会保持 x86_64 体系结构,杜绝架构混用导致的 mach-o file, but is an incompatible architecture 动态链接报错。

五、全生命周期核心命令速查表

为了便于在日常开发中随时翻阅,下表与图示完整总结了 Conda 虚拟环境在创建、维护、诊断和销毁全周期中的标准命令:

怎么用conda创建指定版本的Python虚拟环境
图 4:Conda 虚拟环境全生命周期核心操作矩阵与注意事项
操作目标 标准终端命令 典型应用场景
创建指定版本 conda create -n <name> python=3.10 新项目启动,确定 Python 基准版本
自动确认创建 conda create -n <name> python=3.9 -y 自动化 Shell 脚本、CI/CD 构建流水线
指定社区源创建 conda create -n <name> python=3.12 -c conda-forge 需要最新 Python 构建或特殊科学计算包
指定自定义路径 conda create -p ./venv python=3.11 项目环境内聚于工程根目录下归档
激活环境 conda activate <name> 开始在此环境下执行代码或安装依赖
退出当前环境 conda deactivate 完成工作,切回上一级或 base 环境
环境克隆备份 conda create -n <new> --clone <old> 在无风险副本中测试大版本第三方库升级
导出环境描述 conda env export --no-builds > env.yml 团队成员协同、生产环境一键部署
按配置文件复现 conda env create -f env.yml 拉取他人工程后迅速初始化环境
彻底删除环境 conda remove -n <name> --all 项目结项,释放本地磁盘空间
总结提炼:
使用 Conda 创建指定版本的 Python 虚拟环境,核心在于理解其独立的包级二进制管理机制。在熟练运用 conda create -n <name> python=<version> 之后,配合 python --version 与 which python 进行严谨验证,再借助 libmamba 求解器与 environment.yml 规范,就能在任何多版本混合的复杂开发场景中保持运行时的整洁与稳定。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。