Не решение Python, но ...
Я столкнулся с этой проблемой со сценарием, работающим под CentOS (Linux), и то, что работало в моей ситуации, было просто запуском «read -t» Bash "в подпроцессе. Жестокий отвратительный хак, я знаю, но я чувствую себя достаточно виноватым в том, насколько хорошо он работал, и я хотел поделиться им со всеми здесь.
import subprocess
subprocess.call('read -t 30', shell=True)
Все, что мне нужно, было то, что ожидало 30 секунд, если только ENTER нажата клавиша. Это отлично работает.