まあ、私は生地やpythonにさえ慣れていないことを認めなければなりませんが、正しい方法でそれを行うことに興味があるので...すでにそれらに応じてprepareいくつかの変数を追加する関数でいくつかのタスクを装飾したいと思いますenv与えられた。見てください:
from fabric.api import *
import fabstork.project.base as base
import fabstork.utils.drupal as utils
def prepare(task):
    """ Decorator to set some additional environment variables """
    def prepared(*args, **kwargs):
        env.sites_folder = env.sites_folder if 'sites_folder' in env else 'default'
        env.settings_file = "%s/www/sites/%s/settings.php" % (env.build_path, env.sites_folder)
        # more to come
        return task(*args, **kwargs)
    return prepared
@task
@prepare
def push(ref='HEAD'):
    """
    Deploy a commit to a host
    """
    base.push(ref)
    utils.settings_php()
    utils.link_files()
    utils.set_perms()
上記の例は、コマンドラインでpush実行するときに使用可能なタスクのリストにないため、失敗します。fab --listデコレータを省略すると、完璧なタスクにつながります。私は何を間違っていますか?