在bash中创建Python环境后无法激活
我有一个脚本叫做 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}
。