Mam problemy z budowaniem aplikacji PySide Python za pomocą py2app (dla OS X). Wygląda na to, że coś dziwnego dzieje się z wątkami w pakiecie aplikacji.Aplikacja QApplication nie działa w głównym wątku podczas budowania pakietu aplikacji PySide za pomocą py2app
Oto minimalne przykład
from PySide.QtCore import *
from PySide.QtGui import *
import sys
class App(QApplication):
def __init__(self):
QApplication.__init__(self, sys.argv, True)
self.timer = QTimer(self)
if __name__=='__main__':
app = App()
app.exec_()
Kiedy uruchomić z wiersza poleceń: python test.py
, to działa dobrze, bez błędów. Jednak kiedy następnie skompilować go z poniższej setup.py: pojawiają
from setuptools import setup
import py2app
import PySide
APP = ['test.py']
DATA_FILES = []
OPTIONS = {'argv_emulation': False,
'includes' : 'PySide',
'resources' : "qt_menu.nib"
}
setup(
app=APP,
data_files=DATA_FILES,
options={'py2app': OPTIONS},
setup_requires=['py2app'],
)
te błędy w konsoli:
11/05/2013 13:54:20.958 [0x0-0xb37b37].org.pythonmac.unspecified.test: QObject: Cannot create children for a parent that is in a different thread.
11/05/2013 13:54:20.958 [0x0-0xb37b37].org.pythonmac.unspecified.test: (Parent is App(0x105f41f10), parent's thread is QThread(0x100106cc0), current thread is QThread(0x10251ea80)
Wygląda więc na to, że aplikacja nie jest budowany na żywo w głównym wątku dowolny jeszcze. Wszelkie pomysły, jak to naprawić?
Za to, co jest warte, nie mogę odtworzyć twojego problemu za pomocą PyQt4 (Qt-4.8.3, PyQt-4.9.5, OSX-10.7, Python-2.7.3, py2app -0,7.3). Być może ten problem dotyczy tylko użytkowników PySide? –
To dziwne. Py2app nie tworzy wątków w pakiecie aplikacji. –
BTW. Nie musisz importować Pyside do pliku setup.py. –