É quase certo que, quando você executa sudo , as variáveis de ambiente virtualen, aliases, funções, etc. não estão sendo transferidas.
A solução seria executar explicitamente o executável Python do ambiente virtual com sudo . Por exemplo, se o seu virtualenv for ./AwesomeProject, você poderá executar sudo ./AwesomeProject/bin/python <script> para usar o script com o virtualenv com privilégios de root.