在bash中创建Python环境后无法激活

0 投票
1 回答
46 浏览
提问于 2025-04-14 15:40

我有一个脚本叫做 myenv.sh

#!bin/bash
echo "####### Install automated template ########"
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install ipykernel pandas seaborn scikit-learn
echo "######## Done ########"  

我运行这个脚本,它创建了环境,但没有保持激活状态。可能是它退出了。所以我试了这个:

#!bin/bash
echo "####### Install automated template ########"
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install ipykernel pandas seaborn scikit-learn
source ${PWD}/.venv/bin/activate
echo "######## Done ########"  

但是没有任何反应。请问,我哪里做错了?

1 个回答

0

当你运行一个激活虚拟环境的脚本时,这个激活只会影响到为这个脚本创建的子命令行,而不会影响到运行这个脚本的主命令行。一旦脚本执行完毕,子命令行就会关闭,它所做的任何环境改变,包括虚拟环境的激活,都会消失。

第二个脚本有问题,因为 PWD = pwd 这个写法是错误的,它不正确地把命令的输出赋值给一个变量(实际上你在这里甚至没有调用 pwd)。正确的写法应该是 PWD=$(pwd)(注意这里没有空格),但是... 其实这样做是多余的,因为 PWD 是一个内置变量,已经包含了当前目录,所以你可以直接使用 ${PWD}

撰写回答