Sim, um virtualenv é bastante adequado para produção - temos clientes (muito) grandes usando Python executando seus aplicativos dentro de um virtualenv, e funciona muito bem para mantê-los isolados da configuração do sistema Python.
No entanto, eu não recomendaria usá-lo para "portabilidade" - tentando transportar tudo de uma máquina para outra. Há muitas oportunidades para falhas sutis devido a incompatibilidades que ninguém mais vai notar (porque não é algo que é amplamente feito). Em vez disso, tenha uma automação capaz de configurar um novo virtualenv que corresponda aos seus requisitos em uma nova máquina.