Я создал приложение PyQt с использованием python 3.3 и Qt4.8, и я начинаю с него QProcess. Вновь запущенный дочерний процесс пытается запустить скрипт python, и этот скрипт терпит неудачу, поскольку он ищет модули python в каталоге 3.3 (по умолчанию python в системе - 2,7).Запустите QProcess с настройкой PYTHONPATH на другую версию python
Я думаю, что он ищет модули python в каталоге python 3.3, потому что дочерний процесс наследует его среду (и, следовательно, PYTHONPATH) от родительского процесса. Я могу изменить PYTHONPATH с помощью QProcess.setProcessEnvironment, но как получить значение PYTHONPATH для версии 2.7 в приложении PyQt, использующем python 3.3?
EDIT: Ответ на этот вопрос Виктор работал для меня. Мне нужно было удалить PYTHONPATH и PYTHONHOME из окружающей среды. Мне нужно было удалить PYTHONHOME, потому что в противном случае пусковая установка использовалась из локального каталога моего приложения (я создал приложение/пакет с помощью py2app). Ниже приведен код:
systemEnvironment = QtCore.QProcessEnvironment.systemEnvironment()
systemEnvironment.remove('PYTHONPATH')
systemEnvironment.remove('PYTHONHOME')
process.setProcessEnvironment(systemEnvironment)
Добавить проблемную часть кода вы должны ответить на этот вопрос. –
process = QProcess (self); process.start ("perl abc.pl"); Этот abc.pl в trun вызывает еще один скрипт python, и мне нужно вызвать его с помощью набора PYTHONPATH для поиска среды 2.7 (текущий скрипт работает в python 3.3). – Gaurav