2

我一直在使用fabric 来部署一个带有virtualenv 的应用程序。我上周使用的是 Fabric 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,它工作得很好。

为什么我的织物脚本不起作用?

提前致谢

4

2 回答 2

6

Instead of the serial approach with..

source bin/activate
pip install -U distribute

..directly use the pip executable of the virtualenv:

myenv/bin/pip install -U distribute
于 2013-01-31T15:48:13.377 回答
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')
于 2012-12-28T12:32:08.513 回答