3

再現する手順:

  1. Linux 環境では、デスクトップに「fab」というフォルダーを作成します。
  2. 参考までに、私はzshを使用しています
  3. CDに~/Desktop/fab
  4. fabfile.py次を発行して、./fab ディレクトリで作成したこれを実行しfab initます。

    #!/usr/bin/env python
    #set up ssh to remote server
    
    import sys, os, fileinput
    from fabric.api import *
    
    def init():
        local('mkdir ./virtualenv')
        local('cd ./virtualenv && virtualenv --no-site-packages venv')
        local('chown -R user:user ./virtualenv/')
        local('chmod 770 -R ./virtualenv/')
        venv = 'source ./virtualenv/venv/bin/activate && '
        local(venv+'pip install mysql-python django South')
    
  5. このエラーを取得します。

    ➜  fab  fab init    
    [localhost] local: mkdir ./virtualenv
    [localhost] local: cd ./virtualenv && virtualenv --no-site-packages venv
    New python executable in venv/bin/python
    Installing distribute...........................................................................................................................................................................................................................done.
    Installing pip................done.
    [localhost] local: chown -R user:user ./virtualenv/
    [lcalhost] local: chmod 770 -R ./virtualenv/
    [localhost] local: source ./virtualenv/venv/bin/activate && pip install mysql-python django South
    /bin/sh: 1: source: not found
    
    Fatal error: local() encountered an error (return code 127) while executing 'source ./virtualenv/venv/bin/activate && pip install mysql-python django South'
    
    Aborting.
    
  6. source ./virtualenv/venv/bin/activate && pip install mysql-python django Southzsh から実行し、動作することを確認します。

コードでa を使用しても同じエラーが発生するため、これはthisのような質問の重複ではありません。with prefix(

何か案は?

4

1 に答える 1

3

に置き換えsourceます/bin/bash/。次に例を示します。

from fabric.api import *


def init():
    local('virtualenv --no-site-packages venv')

    venv_command = '/bin/bash venv/bin/activate'
    pip_command = 'venv/bin/pip install mysql-python django South'
    local(venv_command + ' && ' + pip_command)

参考までに、ここで提案されているように、コンテキストマネージャーrun/sudoを使用することをお勧めします。prefix

それが役立つことを願っています。

于 2013-07-22T19:50:08.313 に答える