2015-04-28 3 views
1

Я создаю исполняемый файл для моего программного обеспечения python, в котором у меня есть интерактивный виджет терминала python. Он отлично работает, если я запускаю его в python, но он не запускается, если я дважды щелкните файл .exe, который я создал с помощью py2exe. Я изолировал проблему, и он падает вниз к простой строке коды:import rich_ipython_widget в py2exe excutable

from IPython.qt.console.rich_ipython_widget import RichIPythonWidget 

если я надену эту уникальную строку в файл test.py и я запустить его, нет никакой ошибки. Теперь я строю EXE-файл с py2exe, используя следующий файл setup.py:

from distutils.core import setup 
from py2exe.build_exe import py2exe 

setup(name = "Test", 
     console=[{"script":"testShell.py"}], options={}) 

затем полученное сообщение об ошибке, при запуске исполняемого файла, является:

ImportError: 
Could not load requested Qt binding. Please ensure that 
PyQt4 >= 4.7 or PySide >= 1.0.3 is available, 
and only one is imported per session. 

Currently-imported Qt library: 'pyqt' 
PyQt4 installed:     False 
PySide >= 1.0.3 installed:  False 
Tried to load:     ['pyqt'] 

Поскольку приложение работает в Python , это означает, что проблема заключается не в том, что pyqt не установлен, но не найден.

Я смотрю на стену здесь, дайте мне знать, если у вас есть ключ?

+0

Похоже, что py2exe не может понять, что нужны PyQt4 или PySide. Чаще всего такую ​​ошибку нельзя исправить, помогая py2exe немного с помощью опций пакетов, например. что-то вроде optins = {"packages: 'PyQt4} – Werner

+0

Спасибо за комментарий. Я попытался добавить этот пакет, как вы предлагали, но это не помогло: packages = [' matplotlib ',' pylab ',' pytz ' , 'tables', 'numexpr', 'PyQt4'] – Yvus

+0

Какая ошибка при запуске исполняемого файла? Все то же или другое? – Werner

ответ

1

Я исправил эту же проблему, изменив файл "qt_loader.py"C:\Python27\Lib\site-packages\IPython\external).

Что вам нужно сделать, просто заставьте функцию "has_binding" вернуть "True". Проблемы возникают в "imp.find_module", который не работает с py2exe!

Здесь действительно «false positive», (т. Е. Тест, который не работает, пока нет реальной проблемы). Пропуск теста решает проблему.

+0

Это действительно решило проблему. – Yvus