簡體   English   中英

Bash 腳本激活(源)python virtualenv 使用 arguments

[英]Bash script to activate (source) python virtualenv using arguments

我的主目錄中有一個 python virtualenv 文件夾,其中有很多 python 虛擬環境,我想制作一個運行此命令的腳本:

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

使用 if else 可以,但我想要在~/Envs/目錄中查找的內容,這樣當我添加新環境時,我不必手動編輯腳本,但我可以使用 arguments 在另一個目錄中執行該命令.(類似於$ activateEnv -1 ,在我的~/Envs/ directory, $ activateEnv -2在第二個文件夾中運行它,等等)

  • 關於如何做到這一點的任何想法?
  • 請以相當簡單的方式解釋它,因為我對 Linux 相當陌生。

您不能制作 bash 腳本來執行此操作。 原因很簡單。 在子進程中執行 bash 腳本,將為該子進程更改 virtualenv,然后 bash 腳本結束,您 go 恢復到父進程之前完全相同的環境。

換句話說:子進程永遠不能改變父進程的環境。

你可以做的是:

  • 使用 bash 別名
  • 使用 shell function
  • 創建一個腳本,但使用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 )可能會更直觀,特別是如果你給你的 venvs 提供有意義的短名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM