SSH进入远程服务器并在虚拟环境中运行命令

时间:2015-11-28 07:11:30

标签: 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

当我登录服务器并执行它时,此脚本正常工作。但是当我尝试从mac终端执行相同操作时,它会给我以下错误

/home/ubuntu/scripts/deploy_code.sh: line 2: workon: command not found

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

ssh prodserver ". /home/ubuntu/scripts/deploy_code.sh"

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

由于

1 个答案:

答案 0 :(得分:1)

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

因此激活此env的正确方法是source /home/ubuntu/anaconda3/bin/activate py36。 但是因为这个env的路径存储在我的系统中,我使用命令echo $PATH进行了验证。当我写source activate py36时,我的服务器知道在哪里看。 不幸的是,当你从远程机器ssh时,服务器不知道在哪里看。所以,如果你提供像source /home/ubuntu/anaconda3/bin/activate py36这样的env的完整路径,那么它就可以了。

你需要找出你拥有的虚拟环境,然后找到它的实际位置。