是否可以运行一个shell脚本来源我的python virtualenv
,然后让shell在新环境中?
这是我的shell脚本
#!/usr/bin/env bash
function createProject() {
if [ -e $1 ]
then
rm -r ./$1
fi
if [ -e env-$1 ]
then
rm -r ./env-$1
fi
virtualenv ./env-$1
django-admin startproject $1
}
createProject $1
source ./env-$1/bin/activate
exit 1
然后我运行./script.sh hello-world
。
基本上如果我运行source ./hello-world/bin/activate
我的shell,virualenv将被激活,然后shell将在新环境中运行。
我该如何做到这一点?
答案 0 :(得分:2)
你想要的只是使用shell函数,因为它们不会产生单独的进程。 您的方法的问题是virtualenv在为运行shell脚本而创建的子流程中激活。
不要使用可执行的shell脚本,而是这样:
function createProject() {
if [ -e $1 ]
then
rm -r ./$1
fi
if [ -e env-$1 ]
then
rm -r ./env-$1
fi
virtualenv ./env-$1
django-admin startproject $1
source ./env-$1/bin/activate
}
将其保存为createProject.sh并将此文件源于.bashrc或.bash_profile
source createProject.sh
这样就可以在当前流程中激活virtualenv。