通过 SSH 连接到远程服务器并在虚拟环境中运行命令

Anu*_*rag 5 ssh virtualenv

我正在尝试执行远程服务器上的脚本。该脚本激活虚拟环境,然后执行一些命令。现在我想直接从我的 mac 终端执行这个脚本。这是脚本的内容

cd ~/workdir/
workon myvirtualenv
source ~/prodStuff/envVars 
git pull origin master
supervisorctl -u admin -p password restart gunicorn
supervisorctl -u admin -p password status
deactivate
Run Code Online (Sandbox Code Playgroud)

当我登录服务器并执行它时,该脚本运行良好。但是当我尝试从 mac 终端执行相同的操作时,它给出了以下错误

/home/ubuntu/scripts/deploy_code.sh: line 2: workon: command not found
Run Code Online (Sandbox Code Playgroud)

所以本质上,我无法切换到虚拟环境。这是我用来从终端执行脚本的命令

ssh prodserver ". /home/ubuntu/scripts/deploy_code.sh"
Run Code Online (Sandbox Code Playgroud)

如果有人能帮助我解决这个问题,我将不胜感激。

谢谢

Ase*_*eem 4

我遇到过同样的问题。我有 conda 虚拟环境,我将使用 : 激活它source activate py36。作为 conda env,它实际上存储在/home/ubuntu/anaconda3/中。

所以激活这个环境的正确方法是source /home/ubuntu/anaconda3/bin/activate py36。但由于这个环境的路径存储在我的系统中,我用命令验证了它echo $PATH。当我写信时,我的服务器知道该去哪里查看source activate py36。不幸的是,当您从远程计算机进行 ssh 时,服务器不知道去哪里查找。因此,如果您提供环境的完整路径,source /home/ubuntu/anaconda3/bin/activate py36它就会起作用。

您需要找出您拥有哪种虚拟环境以及它的实际位置。