gpt4 book ai didi

python - 使用参数激活(源)python virtualenv 的 Bash 脚本

转载 作者:行者123 更新时间:2023-12-01 06:54:39 27 4
gpt4 key购买 nike

我的主目录中有一个 python virtualenv 文件夹,其中有很多 python 虚拟环境,我想制作一个运行此命令的脚本:

$ source ~/Envs/env_that_i_specify_with_args/bin/activate。

使用 if else 可以工作,但我想要在 ~/Envs/ 目录中查找的内容,这样当我添加新的环境时,我不必手动编辑脚本,但我可以只需使用参数在另一个目录中执行该命令。(类似于 $ activateEnv -1,要在我的 ~/Envs/目录中的第一个文件夹中运行该命令,$ activateEnv -2 在第二个运行它,等等)

  • 对于如何做到这一点有什么想法吗?
  • 请用相当简单的方式解释一下,因为我对 Linux 还很陌生。

最佳答案

您无法使用 bash 脚本来执行此操作。原因相当简单。bash脚本在子进程中执行,该子进程的virtualenv将被更改,然后bash脚本结束,您返回到父进程并恢复与之前完全相同的环境。

换句话说:子进程永远不能改变父进程的环境。

你可以做的是:

  • 使用 bash 别名
  • 使用 shell 函数
  • 创建一个脚本,但使用 source <script_name> 来“调用”它

例如,您可以将以下行添加到您的 ~/.bashrc 中或发送至您的~/.bash_aliases (如果是 ~/.bashrc 调用的)

setvenv() {
source /path/to/your/venv_base_dir/$1/bin.activate
}

例如,如果您有以下 venvs

/path/to/your/venv_base_dir/venvone
/path/to/your/venv_base_dir/venvtwo
/path/to/your/venv_base_dir/venvthree

然后您只需输入 setvenv venvthree激活。

您询问过激活第一个、第二个或第三个 venv,谁是第一个?按字母顺序排列的第一个?第一个按创建时间排序?我认为使用目录名称( venvonevenvtwovenvthree )可能会更直观,特别是如果您为 venv 提供有意义的短名称。

关于python - 使用参数激活(源)python virtualenv 的 Bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58868050/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com