Constructing, signing, and pushing a Bitcoin transaction by using pybitcointools with Python
OK, so first off:


Use Python 2.7; there's numerous pieces of code which doesn't work with Python 3.4, namely make_request
Check out this pybitcointools fork, as there's a lot of added functionality (see the README.txt file)


The functions you've named work as so:


mktx(ins, outs) where ins is an array of "hexTxIdString:index" and outs is an array of {"value": 12345, "address": 1base58addressString}
mksend(ins, outs, txfee, 1changeAddress) where txfee is again in Satoshis


sign(unsignedtx, index to sign, privkey for utxo) where index is the input index to sign



We'll start by making the ins:

utxos = [(utxo_txid, utxo_index), (txid2, i2)....]
ins = ["%s:%d" % utxo for utxo in utxos]
change_addr = "1thisIsAChangeAddressYouOwn123"
txfee = int(0.45 * len(ins) * 10000) # you may want to check this 10000 value, it could be 100000
rawtx = mksend(ins, txfee, change_addr)


Right, so let's assume, you have the UTXOs' TxID and corresponding vout for each private key. Make an dict of privkeys ={ 'TxID:vout' : privkey, 'TxID2:vout2': privkey2 } Then finally, signall(rawtx, privkeys) to get your signed Tx. Then to broadcast it, use pushtx(signedTx, source="bci") or pushtx(signedTx, "testnet", source="blockr") for Testnet. Done!