如何使用bash脚本激活pythonvirtualenv并在脚本完成后保留它?
我像往常一样创建了一个新的PythonVenV:如何使用bash脚本激活pythonvirtualenv并在脚本完成后保留它?,python,bash,virtualenv,Python,Bash,Virtualenv,我像往常一样创建了一个新的PythonVenV:python-m venv.venv 我需要创建一个bash脚本,它可以激活这个venv并在完成后保持该状态 我知道,激活venv的正常解决方案是从终端调用source.venv/bin/activate,或者通过别名使用它 但是我在bash脚本中需要这个特性,它为我的开发做了很多其他有用的事情 我试着用一种简单的方式: my-script.sh: #!/bin/bash source ".venv/bin/activate" echo $VIR
python-m venv.venv
我需要创建一个bash脚本,它可以激活这个venv并在完成后保持该状态
我知道,激活venv的正常解决方案是从终端调用source.venv/bin/activate
,或者通过别名使用它
但是我在bash脚本中需要这个特性,它为我的开发做了很多其他有用的事情
我试着用一种简单的方式:
my-script.sh:
#!/bin/bash
source ".venv/bin/activate"
echo $VIRTUAL_ENV
当脚本运行时,venv被激活,我通过$VIRTUAL_ENV检查它。
但在完成之后,状态就消失了:
max@mbp t3 $ ./my-script.sh
/Users/max/t3/.venv
max@mbp t3 $ echo $VIRTUAL_ENV
max@mbp t3 $
完成脚本后是否可以保留激活的venv
我的脚本p
需要它,它有很多不同的python、pip、twine等帮助命令
我希望能够通过我的脚本p
和venv做这样的事情:
$pv
1) 如果已激活venv,则不执行任何操作
2) 如果存在.venv文件夹,则激活该venv并返回激活的venv bash提示符
3) 如果没有.venv文件夹,首先创建venv,然后激活它。并返回激活的venv bash提示符。不,您不能这样做,因为当您像这样运行脚本时,它会运行子shell中的所有内容,完成后会被销毁 。。。但这很容易理解
source./my script.sh
,它不会创建新的子shell来运行它
(或更常见的别名
。/my script.sh
)我更新了问题,解释了为什么需要通过脚本激活venv。我需要它来编写我的脚本p
,它有很多不同的python、pip、twine等帮助命令。我希望能够通过我的脚本p
和venv做这样的事情:$pv
1)如果已经激活了venv,什么都不做2)如果有.venv文件夹,激活venv并返回激活的venv bash提示符。3) 如果没有.venv文件夹,首先创建venv,然后激活它。并返回激活的venv bash提示符。看起来您是对的,不可能从脚本激活python venv并在退出后在控制台中保持此状态:(