¿Cómo usar la codificación 'hex' en Python 3.2 o superior?

En Python 2, para obtener una representación de cadena de los dígitos hexadecimales en una cadena, podría hacer

>>> '\x12\x34\x56\x78'.encode('hex')
'12345678'

En Python 3, eso ya no funciona (probado en Python 3.2 y 3.3):

>>> '\x12\x34\x56\x78'.encode('hex')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
LookupError: unknown encoding: hex

Hay al menosUna respuesta aquí en el SO que menciona que elhex El codec ha sido eliminado en Python 3. Pero entonces,segun los docs, fue reintroducido en Python 3.2, como un "mapeo de bytes a bytes".

Sin embargo, no sé cómo hacer que funcionen estas "asignaciones de bytes a bytes":

>>> b'\x12'.encode('hex')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'bytes' object has no attribute 'encode'

Y los documentos tampoco mencionan eso (al menos no donde yo miraba). Debo estar perdiendo algo simple, pero no puedo ver lo que es.

Respuestas a la pregunta(4)

Su respuesta a la pregunta