Python 2.7:
>>> b"abc".encode('hex')
'616263'
Python 3.5:
>>> b"abc".hex()
'616263'
Python 2/3:
>>> import binascii
>>> binascii.hexlify(b'abc')
'616263'
Не путайте сами двоичные данные, к примеру последовательность байт: 97, 98, 99 и их текстовое представление в шестнадцатиричной системе '616263' так как 9710 == 6116 итд.
В Питоне 3:
>>> b'a'[0] == 97 == 0x61 == 0b01100001
True
Если вы хотите и другие подобные Python 2 str.encode() преобразования из str в str поддерживать, то можно codecs модуль использовать как в Питон 2 так и 3—как сообщение об ошибке рекомендует:
>>> import codecs
>>> codecs.encode('abc', 'rot13').encode()
b'nop'
>>> codecs.encode(_, 'zip')
b'x\x9c\xcb\xcb/\x00\x00\x02\x9b\x01N'
>>> codecs.encode(_, 'hex')
b'789ccbcb2f0000029b014e'
bytes.encode() убран в Питоне 3, чтобы подчеркнуть отличия от str типа (Unicode в Питоне 3) и исключить ошибки, связанные с неявным преобразованием байт в Unicode текст и обратно.