Após criar e ativar seu virtualenv:
virtualenv --no-site-packages env
source env/bin/activate
pip install [your libs]
Você deve definir a variável de ambiente PYTHONPATH para o caminho de instalação python do seu QGIS.
altere [qgispath] para o caminho do seu qgis:
export PYTHONPATH=/[qgispath]/share/qgis/python
também será necessário definir LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/[qgispath]/lib
para evitar esse erro
>>> import qgis.core
ImportError: libqgis_core.so.1.5.0: cannot open shared object file: No such file or directory
Seu pythonpath é definido apenas para o virtualenv e para sua sessão. Se você deseja defini-lo automaticamente sob este virtualenv, é possível criar um arquivo
env/lib/python2.7/site-packagescom um arquivo .pth.
A maneira mais conveniente é adicionar um arquivo de configuração de caminho a um diretório que já está no caminho do Python, geralmente no diretório ... / site-packages /. Os arquivos de configuração do caminho têm uma extensão .pth e cada linha deve conter um único caminho que será anexado ao sys.path. (Porque os novos caminhos são anexadas ao sys.path, módulos nos diretórios adicionados não irá substituir módulos padrão. Isso significa que você não pode usar esse mecanismo para instalar versões fixas de módulos padrão.) Fonte
Para criar e preencher o arquivo, use um comando como esse:
cat > [yourVirtualEnv]/lib/python2.7/site-packages/qgispythonpath.pth << /[qgispath]/share/qgis/python
Encontrado no livro de receitas Python Qgis e um conjunto de respostas relacionado pythonpath