conda环境的activate脚本
通过Python虚拟环境(Virtual Environment)创建可以创建一个独立的Python运行环境,其Script目录下有各种shell环境下的activate脚本。
但是conda创建的环境里面却没有,需要通过conda activate去激活使用环境,这就需要目标机器上也要安装conda工具才行。
所以可以仿照venv模块创建的虚拟环境,自己写一个activate脚本。
这里提供两个脚本,分别用于 Windows 下面的命令提示符环境(activate.bat) 和 Linux/macOS或Windows下的bash shell环境 (activate.sh)。
请将这两个文件放在 Python 环境根目录 下(即与
Lib、Scripts或bin同级的目录)。
1. Windows 脚本 (activate.bat)
这个脚本会自动获取当前 bat 文件所在的目录,将其设置为 PYTHONHOME 并添加到 PATH 中。
@echo off
rem 获取当前脚本所在的绝对路径
set "ENV_ROOT=%~dp0"
rem 去掉路径末尾的反斜杠
set "ENV_ROOT=%ENV_ROOT:~0,-1%"
rem 保存旧的系统变量以便退出时恢复 (可选)
if not defined _OLD_PATH set "_OLD_PATH=%PATH%"
if not defined _OLD_PROMPT set "_OLD_PROMPT=%PROMPT%"
rem 设置 PYTHONHOME 为当前目录 (防止引用系统其他 Python 库)
set "PYTHONHOME=%ENV_ROOT%"
rem 将根目录和 Scripts 目录添加到 PATH
rem 注意:有些 Python 发行版 python.exe 在根目录,有些在 Scripts,这里都加进去
set "PATH=%ENV_ROOT%;%ENV_ROOT%\Scripts;%ENV_ROOT%\Library\bin;%PATH%"
rem 修改命令行提示符,提示已进入环境
set "PROMPT=(PortableEnv) %PROMPT%"
echo.
echo ==================================================
echo Python Environment Activated
echo Location: %ENV_ROOT%
echo ==================================================
echo.
rem 定义 deactivate 命令 (利用 doskey 宏)
doskey deactivate=set "PATH=%_OLD_PATH%" ^& set "PROMPT=%_OLD_PROMPT%" ^& set "PYTHONHOME=" ^& echo Deactivated.
使用方法:
- 双击运行,或者在 CMD 中输入
activate.bat。 - 输入
python即可使用当前目录下的 Python。 - 输入
deactivate可以退出环境(恢复环境变量)。
2. Linux / macOS 脚本 (activate.sh)
Linux 下通常需要使用 source 命令来运行脚本,以便在当前 Shell 会话中生效。
#!/bin/bash
# 获取脚本所在的目录 (兼容 bash 和 zsh)
# 注意:这个脚本必须被 source,不能直接 ./运行
if [ -n "$BASH_SOURCE" ]; then
ENV_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
elif [ -n "$ZSH_VERSION" ]; then
ENV_ROOT="$(cd "$(dirname "${(%):-%x}")" && pwd)"
else
ENV_ROOT="$(cd "$(dirname "$0")" && pwd)"
fi
# 保存旧变量
if [ -z "${_OLD_PATH:-}" ]; then
export _OLD_PATH="$PATH"
fi
if [ -z "${_OLD_PS1:-}" ]; then
export _OLD_PS1="${PS1:-}"
fi
# 设置 PYTHONHOME
export PYTHONHOME="$ENV_ROOT"
# 添加 bin (Linux标准) 和 Scripts (Windows习惯) 到 PATH,以防万一
export PATH="$ENV_ROOT/bin:$ENV_ROOT/Scripts:$PATH"
# 修改终端提示符
export PS1="(PortableEnv) ${PS1:-}"
# 定义 deactivate 函数
deactivate() {
export PATH="$_OLD_PATH"
export PS1="$_OLD_PS1"
unset PYTHONHOME
unset -f deactivate
echo "Deactivated."
}
echo "Python Environment Activated at: $ENV_ROOT"
使用方法:
- 打开终端。
- 运行命令:
source activate.sh(或者. activate.sh)。 - 输入
python验证路径。 - 输入
deactivate退出环境。
核心原理解析
-
动态路径获取:
- Windows 使用
%~dp0获取当前脚本位置。 - Linux 使用
$(dirname "${BASH_SOURCE[0]}")获取 source 脚本的位置。 - 这确保了你把整个文件夹拷贝到 D 盘、E 盘或 Linux 的
/opt目录下都能直接运行,无需修改代码。
- Windows 使用
-
设置
PYTHONHOME:- 这是制作便携式 Python 的关键。设置它会告诉 Python:“不要去系统默认路径找库文件,只在我指定的这个目录下找
Lib”。
- 这是制作便携式 Python 的关键。设置它会告诉 Python:“不要去系统默认路径找库文件,只在我指定的这个目录下找
-
设置
PATH:- 将环境的目录放在
%PATH%的最前面,确保系统优先调用这里的python和pip,而不是系统自带的。
- 将环境的目录放在

浙公网安备 33010602011771号