Você pode usar a2ps . Com a opção -o OUTPUTFILE.ps , produz um arquivo postscript, que pode então ser convertido em pdf usando, por exemplo, ps2pdf (do pacote ghostscript). A numeração de linhas pode ser ativada com --line-numbers=1 . Não sei se o marcador de sintaxe de a2ps suporta padrões python recentes.
Se você preferir as soluções LaTeX, eu recomendaria o listings pacote.