无法使用Fabric在远程Virtualenv中使用pip安装软件包

时间:2012-12-27 18:56:50

标签: deployment virtualenv fabric

我正在使用fabric来使用virtualenv部署应用程序。我上周使用的是面料1.4并升级到1.5.1。我的脚本停止了工作。

无法安装要求。它似乎没有激活virtualenv。在我的代码中,我有:

with cd('%(path)s' % env):
        with prefix('source bin/activate'):
            run('pip install -U distribute')

我收到了拒绝权限错误:error: could not delete '/usr/local/lib/python2.7/dist-packages/pkg_resources.py': Permission denied

正在执行的命令是:

Executed: /bin/bash -l -c "cd /var/www/myproject && source bin/activate && export PATH=\"\\$PATH:\\"/var/www/myproject\\" \" && pip install -U distribute"

如果我ssh到远程计算机并运行cd /var/www/myproject && source bin/activate && pip install -U distribute,它就可以正常工作。

为什么我的布料脚本不起作用?

提前致谢

2 个答案:

答案 0 :(得分:6)

而不是串行方法..

source bin/activate
pip install -U distribute

..直接使用virtualenv的pip可执行文件:

myenv/bin/pip install -U distribute

答案 1 :(得分:3)

虽然不完全是一个解决方案,fabtools有许多与virtualenvs相关的功能非常方便。他们(几乎)为你做了所有艰苦的工作,并且可能值得用来检查它是不是出了别的问题。

# Cut (and modified) from the fabtools documentation
from fabric.api import *
from fabtools import require
import fabtools

@task
def setup():
    # Require a Python package
    with fabtools.python.virtualenv('/home/myuser/env'):
        require.python.package('pyramid')