Can you open line 36 in txUtils.py and insert the following code before it?
import pdb
pdb.set_trace()
This will spawn a debugger when you get to that line. Use it to see the value of "scriptLen", what are the contents of "script" and most importantly what is the value of script[0:2] when you call int() (just type the variable names as if it were the Python console).
I strongly believe that whatever raw transaction you passed is less than 41*2 bytes and so the whole string has been absorbed into "first". Python doesn't raise any exceptions for out-of-range indices and instead just returns an empty string.