[英]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
在第二個文件夾中運行它,等等)
您不能制作 bash 腳本來執行此操作。 原因很簡單。 在子進程中執行 bash 腳本,將為該子進程更改 virtualenv,然后 bash 腳本結束,您 go 恢復到父進程之前完全相同的環境。
換句話說:子進程永遠不能改變父進程的環境。
你可以做的是:
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 誰會是第一個? 第一個按字母順序? 第一個按創建時間排序? 我認為使用目錄的名稱( venvone
, venvtwo
, venvthree
)可能會更直觀,特別是如果你給你的 venvs 提供有意義的短名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.