Você pode usar o seguinte método da classe QgsProject para recuperar o caminho para o arquivo de projeto:
from qgis.core import *
prjpath = QgsProject.instance().fileName()
Se não houver nenhum projeto carregado ou o projeto atual ainda não foi salvo, isso retornará um QString vazio:
PyQt4.QtCore.QString(u'')
Você pode converter o caminho do arquivo do projeto em uma string Python Unicode (se necessário) com:
unicode(prjpath)
No entanto, se você pretende que seu plug-in seja multiplataforma, é melhor não trabalhar com o caminho do arquivo como uma string no Python, mas aproveite a excelente classe QFileInfo do Qt :
from PyQt4.QtCore import *
from qgis.core import *
prjfi = QFileInfo(QgsProject.instance().fileName())
prjfi.absolutePath() # what you are probably looking for
A classe QFileInfo (junto com QFile e QDir ) tratará de muitos problemas de sistema de arquivos de plataforma cruzada para você e fornecerá métodos que, de outra forma, estariam espalhados por mais classes Python.
QgsProject.instance().homePath()
para obter o caminho diretamente #