LINUX.ORG.RU

QProcess возвращает process crashed


0

1

Доброго времени суток господа знатоки. Уже неделю не могу решить проблему по запуску одного GUI приложения из-под другого. Суть состоит в следующем. Есть GUI написанный под PyQt4, который был собран PyInstaller-ом в exe файл с опциями --onefile -w(--windowed). этот GUI успешно запускается... Еще я написал второй GUI(PyQt4) который в свою очередь скачивает последнюю версию первого гуя и запускает его из под себя как отдельный процесс. Он тоже собран в отдельный exe файл. Спеки гуев ниже:

GUI1

# -*- mode: python -*-
a = Analysis(['c:\\Test\\gui1.py'],
             pathex=['c:\\Test\\build'],
             hiddenimports=[],
             hookspath=None)
pyz = PYZ(a.pure)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          name=os.path.join('dist', 'gui1.exe'),
          debug=False,
          strip=None,
          upx=False,
          console=False )

GUI2

# -*- mode: python -*-
a = Analysis(['c:\\Test\\gui2.py'],
             pathex=['c:\\Test\\build'],
             hiddenimports=[],
             hookspath=None)
pyz = PYZ(a.pure)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          name=os.path.join('dist', 'gui2.exe'),
          debug=False,
          strip=None,
          upx=False,
          console=False )

функция запуска выглядит следующим образом:

self.p = Qt.QProcess( self )
self.p_env = Qt.QProcessEnvironment.systemEnvironment()
self.p.setProcessEnvironment( self.p_env )
self.connect( self.p, Qt.SIGNAL( 'error( QProcess::ProcessError )' ), self.printError )
self.connect( self.p, Qt.SIGNAL( 'started()' ), self.printStarted )
self.p.setWorkingDirectory( path + str( Qt.QString( Qt.QDir.separator() ) ) )
self.p.start( pythonArg )          # Абсолютный путь к программе
self.p.waitForFinished( -1 )

При запуске процесса срабатывает сигнал started, однако после этого программа не запускается, хотя если ее просто запустить, то все работает. Пробовал изменить started на static execute, возвращает 1 (Process crashed). Если заменить запускаемый GUI на любую программу (пробовал putty.exe) то все работает замечательно... Не понимаю в чем дело, помогите... Причем под Linux Mint все пашет как надо



Последнее исправление: energyclab (всего исправлений: 1)

Видимо, он всё-таки работает с stdout/stderr/stdin, несмотря на -w. Нужно создать пайпы для него.

unC0Rr ★★★★★
()
Ответ на: комментарий от unC0Rr

ой об этом я и не подумал, сейчас попробую

energyclab
() автор топика
Ответ на: комментарий от unC0Rr

Он в stderr записал No module named PyQt4.QtCore, хотя я везде сделал подключение модулей как from PyQt4 import QtCore, QtGui... Плюс grep -rn «PyQt4.QtCore» ./ по исходникам не дал результатов...

energyclab
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.