我正在尝试执行远程服务器上的脚本。此脚本激活虚拟环境,然后执行一些命令。现在我想直接从我的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"
如果有人可以帮我解决这个问题,我将不胜感激。
由于
答案 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的完整路径,那么它就可以了。
你需要找出你拥有的虚拟环境,然后找到它的实际位置。