2016-03-29 10 views
3

Ich bin gerade dabei, die Dokumentation meines Codes über read-the-docs online zu bekommen, aber das Lesen der Dokumente zur Verarbeitung meiner PyQt4-abhängigen Module scheint problematisch zu sein.PyQt 4 import in read-the-docs

Mein Projekt hat die folgende Struktur:

pkg 
pkg/__init__.py 
pkg/modules/ 
pkg/modules/__init__.py 
pkg/modules/somemodules.py 
pkg/gui/__init__.py 
pkg/gui/someGUImodules.py 

I Sphinx-Autodoc bin mit einer HTML-Darstellung des docstring der verschiedenen Module zu bauen. Auf meiner lokalen Maschine alles funktioniert gut, aber da ich zu mock PyQt4 auf read-the-docs müssen, lief ich in das folgende Problem: In einem meiner GUI-Klassen, ich QtGui.QDialog über

class listSelectorDialog(QtGui.QDialog): 

    def __init__(self,parent,List): 
     super(listSelectorDialog,self).__init__(parent) 

und listSelectorDialog Unterklasse über

class advancedListSelectorDialog(listSelectorDialog): 

    def __init__(self,parent,List): 
     super(advancedListSelectorDialog,self).__init__(parent,List) 

QtGui Mocking wird in lesen-the-docs führen mir zu sagen:

class advancedListSelectorDialog(listSelectorDialog): 
TypeError: Error when calling the metaclass bases 
str() takes at most 1 argument (3 given) 

und damit zusammenbrechen. Ich habe versucht, mein Paket in eine virtuelle Umgebung zu bauen, indem Sie in einem virtualenv Installieren Sie Ihr Projekt mit setup.py installieren aber es stellt sich heraus, obwohl PyQt4 in pip aufgeführt ist, können Sie es nicht installieren können, finden https://superuser.com/questions/679298/how-to-install-pyqt4-and-what-are-the-practical-differences-between-pyqt4-and-py .

Die einzige Problemumgehung, die ich bisher gefunden habe, ist, die GUI-Module nicht zu laden, wenn die Umgebung RTD ist und die Dokumentation der GUI-Module weglässt, aber dies sollte nicht die endgültige Lösung sein. Vielen Dank.

+0

genau dasselbe Problem hier, wenn Sie versuchen, ein Qt-Modul Unterklasse - Erfolg? – hoju

+0

Unfortunalety nicht, entschied sich, die GUI-Module für jetzt nicht zu dokumentieren. Ich werde versuchen, es herauszufinden, wenn ich etwas mehr Zeit habe. – alexblae

Antwort

-1

Ich hatte ein ähnliches Problem mit PyQt5/py3 (ein Metaklassenkonflikt mit MagickMock). Meine Abhilfe ist, manuell das Modul in conf.py zu verspotten statt mit unittest.mock:

class PyQt5: 
    @staticmethod 
    def qVersion(): 
     return '5.0.0' 
    class QtCore: 
     class QObject: 
      pass 
    # etc... 
sys.modules['PyQt5'] = PyQt5 

Dies macht den Import/metaclass Konflikt Problem verschwinden. Leider funktioniert autodoc immer noch nicht (keine Ausgabe), obwohl die Builds passieren ...

Mühsam natürlich.