Como imprimir em stderr em Python?

Existem várias maneiras de escrever no stderr:

 # Note: this first one does not work in Python 3
 print >> sys.stderr, "spam"

 sys.stderr.write("spam\n")

 os.write(2, b"spam\n")

 from __future__ import print_function
 print("spam", file=sys.stderr)

Isso parece contradizerzen de Python # 13 †, então qual é a diferença aqui e existem vantagens ou desvantagens de uma maneira ou de outra? Qual o caminho a ser usado?

† Deve haver uma maneira óbvia - e de preferência apenas uma - de fazê-l

questionAnswers(16)

yourAnswerToTheQuestion