如何在Ubuntu 20.04虚拟机中通过Python自动激活Conda
在Ubuntu 20.04虚拟机中用Python自动激活Conda环境
前提准备
确保系统已安装Anaconda/Miniconda,且Conda初始化脚本已配置(安装时通常自动写入~/.bashrc)。
方法一:通过subprocess调用Shell命令激活
直接在Python脚本中调用bash并执行conda激活逻辑,适用于需要完整shell环境的场景:
import subprocess # 替换为你的目标Conda环境名称 env_name = "your_env_name" # 构造命令:先加载conda初始化脚本,再激活环境,最后执行后续任务 cmd = f""" source ~/miniconda3/etc/profile.d/conda.sh # 若安装Anaconda,路径改为~/anaconda3/etc/profile.d/conda.sh conda activate {env_name} # 此处添加激活环境后需执行的命令,例如运行目标Python脚本 python your_target_script.py """ # 用bash执行命令,check=True会在命令执行失败时抛出异常 subprocess.run(["bash", "-c", cmd], check=True)
方法二:直接设置环境变量切换环境
Conda激活本质是修改系统环境变量,可直接获取目标环境路径并调整变量,无需依赖shell的source命令:
import os import subprocess env_name = "your_env_name" # 目标环境的安装路径,根据实际安装位置调整 env_path = os.path.expanduser(f"~/miniconda3/envs/{env_name}") # 更新环境变量,优先使用目标环境的二进制文件 os.environ["PATH"] = f"{env_path}/bin:{os.environ['PATH']}" os.environ["CONDA_DEFAULT_ENV"] = env_name os.environ["CONDA_PREFIX"] = env_path # 验证环境切换结果 result = subprocess.run(["python", "--version"], capture_output=True, text=True) print(f"当前Python版本(环境内): {result.stdout.strip()}")
方法三:结合Shebang与包装脚本实现一键运行
若需直接执行Python脚本时自动激活环境,可编写bash包装脚本:
- 编写目标Python脚本
task.py:
#!/usr/bin/env python import os print(f"当前激活的Conda环境: {os.environ.get('CONDA_DEFAULT_ENV', '未激活')}") # 此处添加业务逻辑代码
- 创建bash包装脚本
run_task.sh:
#!/bin/bash source ~/miniconda3/etc/profile.d/conda.sh conda activate your_env_name python task.py
- 赋予脚本执行权限:
chmod +x run_task.sh
- 运行脚本:
./run_task.sh
注意事项
- 务必确认Conda初始化脚本路径正确,不同安装版本(Anaconda/Miniconda)路径有差异。
- 非交互式shell环境(如定时任务crontab)中,必须显式加载conda初始化脚本,否则
conda activate命令会失效。 - 避免在单个脚本中多次切换Conda环境,易导致环境变量混乱,建议一个脚本对应一个目标环境。
内容的提问来源于stack exchange,提问作者PRAJAKTA
相关产品推荐
相关产品推荐

