我正在尝试执行位于我的远程服务器上的脚本。这个脚本激活一个虚拟环境,然后执行一些命令。现在我想直接从我的 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

当我登录到服务器并执行它时,这个脚本工作正常。但是当我尝试从 mac 的终端执行相同的操作时,它给了我以下错误
/home/ubuntu/scripts/deploy_code.sh: line 2: workon: command not found

所以基本上,我无法切换到虚拟环境。这是我用来从终端执行脚本的命令
ssh prodserver ". /home/ubuntu/scripts/deploy_code.sh"

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

谢谢

最佳答案

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

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

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

关于SSH 到远程服务器并在虚拟环境中运行命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33968746/

10-11 23:01
查看更多