2016-03-29 15 views
3

Şu anda kodlarımın çevrimiçi belgelerini dokümanlar aracılığıyla çevrimiçi olarak alma aşamasındayım, ancak PyQt4'e bağlı modüllerimi işlemek için dokümanı okumanın sorunlu olduğunu düşünüyorum. Farklı modüllerin docstringe bir html temsilini oluşturmak için sfenks-AutoDoc kullanıyorumPyQt 4, dokümanı oku

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

:

Projem aşağıdaki yapıya sahiptir. Okuduğum-dokümanlar üzerinde mock PyQt4 gerek beri benim yerel makine her şey, ancak, gayet iyi çalışıyor, ben şu sorun koştu: my GUI sınıfların birinde, ben

class listSelectorDialog(QtGui.QDialog): 

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

ve listSelectorDialog aracılığıyla QtGui.QDialog alt sınıf QtGui alaycı

class advancedListSelectorDialog(listSelectorDialog): 

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

aracılığıyla bana salt-docs neden olacaktır:

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

ve dolayısıyla çöküyor. Ben setup.py Ancak yüklemek kullanarak virtualenv içine projenizi yükleyin seçerek sanal ortama paketimi oluşturmak için çalıştık, bu bunu yükleyemezsiniz, PyQt4 pip listelenen olsa bile çıkıyor, https://superuser.com/questions/679298/how-to-install-pyqt4-and-what-are-the-practical-differences-between-pyqt4-and-py bakınız .

Şimdiye kadar bulduğum tek çözüm, ortam RTD ise GUI modüllerini yüklememektir ve GUI modüllerinin belgelerini dışarıda bırakmaktır, ancak bu nihai çözüm olmamalıdır. Teşekkürler.

+0

Qt modülünü alt sınıflara ayırmaya çalışırken tam olarak aynı sorun - herhangi bir başarı? – hoju

+0

Maalesef, şimdilik GUI modüllerini belgelemeye karar vermediniz. Biraz fazla zamanım olduğunda bunu anlamaya çalışacağım. – alexblae

cevap

-1

PyQt5/py3 (MagickMock ile bir metaclass çakışması) ile benzer bir sorun yaşadım. Benim geçici çözüm elle unittest.mock kullanmak yerine conf.py modülü alay etmektir:

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

Bu ithalat/Metaclass çatışma sorunu ortadan yapar. Ne yazık ki, autodoc hala çalışmıyor (çıkış yok), inşa etse de ...

Tabii ki yorucu.