Fabric 使用错误诊断一则, out: /bin/bash: workon: command not found

出现原因,
sudo是不带环境变量的,所以sudo的程序需要先把bashrc或者bash_profile里的重要环境变量先执行

在fabric里的时候就是要先source /usr/local/bin/virtualenvwrapper.sh

所以我的fabric脚本修改如下


env.gunicorn_script_name = 'site_01'

# virtualenv for python
env.virtualenv_workon_version = 'dj151_01'

env.source_virtualenvwrapper = 'source /usr/local/bin/virtualenvwrapper.sh'
env.virtualenv_workon_prefix = '%s && workon %s' % (env.source_virtualenvwrapper, env.virtualenv_workon_version)

@task
@roles('web')
def deploy_migrate():
    ''' migrate '''
    with cd('{app_base_path}/current'.format(**env)), prefix(env.virtualenv_workon_prefix):
        sudo('python manage.py syncdb')

相关链接: