2

ファブリックを使用して、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と、問題なく動作します。

ファブリック スクリプトが機能しないのはなぜですか?

前もって感謝します

4

2 に答える 2

6

シリアル アプローチの代わりに..

source bin/activate
pip install -U distribute

..virtualenv の pip 実行可能ファイルを直接使用します。

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 に答える