You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Shell脚本进入Python虚拟环境?解决activate不生效问题

问题原因

Shell脚本默认在子进程中运行,source .venv/bin/activate仅会激活子进程内的虚拟环境,脚本执行结束后子进程退出,当前终端的父Shell不会继承该环境变更。不过你脚本里的pip install其实原本就会在子进程的虚拟环境中执行,若你发现依赖装到了本地环境,大概率是混淆了脚本内的执行环境与终端当前环境,或是后续手动用本地pip重复安装了依赖。

解决方案

方案1:让脚本在当前Shell进程中执行

不要直接用./script.sh运行脚本,改用source或.命令执行,这样脚本会在当前终端的Shell进程中运行,环境变更会直接作用于你的终端:

source ./你的脚本名.sh
# 或者简写为
. ./你的脚本名.sh

执行后,你的终端会直接处于虚拟环境中,后续操作都将使用该环境的Python和pip。

方案2:直接调用虚拟环境的pip(无需激活)

如果只需要创建环境并安装依赖,不需要改变当前终端的环境,可以跳过激活步骤,直接指定虚拟环境内的pip路径来安装依赖:
修改后的脚本如下:

#!/bin/bash
red=$(printf '\033[31m')
reset=$(printf '\033[0m')
rm -rf .venv
python3 -m venv .venv
echo '*' > .venv/.gitignore
if [ -f "requirements.txt" ]
then
        .venv/bin/pip install -r requirements.txt
fi
echo $red"Virtual Environment Created"$reset

这种方式能确保依赖被安装到.venv目录下,之后若需要激活虚拟环境,手动执行source .venv/bin/activate即可。

内容的提问来源于stack exchange,提问作者vs07

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 01:57:42