As for your second question, I can't recall ever seeing a traceback with the wrong line number, regardless of the number of blank lines. Where are you seeing this happen?
for i in range(4): print i print "complete" x
>>> for i in range(4): ... print i ... print "complete" x ... Parsing error <type 'exceptions.SyntaxError'>: invalid syntax (line 3)
This is the behaviour that troubles me because all correspondence between errors and the original script is lost, and that is a bad thing because it's very hard to count lines in your original script editor. Any solutions?