我的结构文件:
def deploy():
code_path = 'mysite/public_html/mysite'
with cd(code_path):
with prefix("workon mysite"):
run('git pull')
run('supervisorctl -c ~/supervisord.conf restart ' + env.host_string)
我收到以下错误:
Aborting.
[myserv] out: /bin/bash: workon: command not found
显然,当我手动执行(没有结构)时,workon命令有效。我怀疑/usr/local/bin/virtualenvwrapper.sh
没有被采购(通常是通过.bash_profile运行)。
要使workon
命令正常工作,我需要做什么?
答案 0 :(得分:7)
尝试使用以下方法修改前缀:
with prefix(". /usr/local/bin/virtualenvwrapper.sh; workon mysite"):
答案 1 :(得分:3)
您必须将此虚拟包装器加载代码从.bashrc
复制到.bash_profile
文件,如果不存在,请创建新的.bash_profile
文件并复制到那里。
要复制的代码::
export WORKON_HOME=/home/virtual
source /usr/local/bin/virtualenvwrapper.sh
发生此错误是因为.bashrc
仅由同时具有交互和非登录的shell读取。所以在这种情况下它不是交互式非登录shell,所以它不会起作用。所以我们必须将这些代码复制到.bash_profile
文件。
答案 2 :(得分:0)
我将 pyenv 与插件 pyenv-virtualenvwrapper 一起使用。我在 workon 上没有成功,而是使用了这个(fabric 2.5):
with c.prefix('source /home/mirek/.virtualenvs/%s/bin/activate' % PROJECT):
with c.prefix('cd /home/mirek/dj/%s/%s' % (PROJECT, PROJECT)):
c.run('python manage.py ....')