如何使用 bash 脚本激活 python virtualenv 并在脚本完成后保留它?
How to activate a python virtualenv using a bash script and keep it after the script finishing?
我像往常一样创建了一个新的 python venv:python -m venv .venv
我需要创建一个 bash 脚本来激活这个 venv 并在完成后保持那个状态。
我知道,激活 venv 的正常解决方案是从终端调用 source .venv/bin/activate
或通过别名使用它。
但是我的 bash 脚本需要这个功能,它可以为我的开发做很多其他有用的事情。
我试着用一种简单的方式来做:
我的-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 来做这样的事情:
$ p v
1)如果已经有激活的venv,什么都不做
2) 如果有.venv 文件夹,激活venv 和return ACTIVATED venv bash 提示符。
3) 如果没有.venv文件夹,先创建venv,然后激活。还有 return ACTIVATED venv bash 提示符。
不,你不能那样做,因为当你 运行 你的脚本那样时,它 运行 子 shell 中的所有东西在完成后都会被销毁
...但很容易
source ./my-script.sh
不会在
中为 运行 创建新的子 shell
(或更常见的别名 . ./my-script.sh
)
我像往常一样创建了一个新的 python venv:python -m venv .venv
我需要创建一个 bash 脚本来激活这个 venv 并在完成后保持那个状态。
我知道,激活 venv 的正常解决方案是从终端调用 source .venv/bin/activate
或通过别名使用它。
但是我的 bash 脚本需要这个功能,它可以为我的开发做很多其他有用的事情。
我试着用一种简单的方式来做:
我的-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 来做这样的事情:
$ p v
1)如果已经有激活的venv,什么都不做
2) 如果有.venv 文件夹,激活venv 和return ACTIVATED venv bash 提示符。
3) 如果没有.venv文件夹,先创建venv,然后激活。还有 return ACTIVATED venv bash 提示符。
不,你不能那样做,因为当你 运行 你的脚本那样时,它 运行 子 shell 中的所有东西在完成后都会被销毁
...但很容易
source ./my-script.sh
不会在
(或更常见的别名 . ./my-script.sh
)