Как исправить ошибки при запуске python скрипта file.py преобразованного в file.exe?

Добрый вечер.
Нужно было получить програмку, которая будет работать под xp и под win7. Там 4 кнопки и 4 label'a, вызов внешней утилиты с помощью subprocess.call, в качестве аргументов - пути к выбранным файлам/папкам. Написал ее на PyQt, прогуглил руководства по преобразованию .py в .exe, с помощью py2exe получил exe файл, но он работает только на моей машине. С помощью pyinstaller'a пробовал - то же самое.
На других либо не запускается либо выдает ошибку
This application failed to start because it could not find or load the Qt platform plugin "windows"
Reinstalling the application may fix this problem

Добавлял папку C:\Python34\Lib\site-packages\PyQt4\plugins\platforms в папку с получившимся exe(там qwindows.dll и qminimal.dll) - появляется еще строка
Available platform plugins are: minimal, windows.

Для py2exe в notepad++ создавал такой скрипт, сохранял в utf-8 без BOM

from distutils.core import setup
import py2exe

setup(
windows=[{"script":"convert.py"}],
options={"py2exe": {"includes":["sip","PyQt4._qt"]}}
)

или вместо "PyQt4._qt" добавлял "PyQt4.QtGui" "PyQt4.Core"

после запуска команды "python script.py py2exe"
появляется сообщение о 3 пропущенных модулях
? readline imported from cmd, code, pdb
? win32api imported from platform
? win32con imported from platform

пробовал в setup.py from platform import * или "includes":["sip","platform"]

С помощью Pyinstaller'a:

Pyinstaller pyinstaller --onedir --onefile --windowed "C:\Python34\convert.py"

Результат - на моем запускается, на других та же ошибка.

Установил на другом компе python3.4.3, PyQt4-4.11.4-gpl-Py3.4-Qt5.4.2-x32 в Path добавил все пути, та же ошибка.

Пробовал в папку с другой программой, написанной на PyQt, и ее dllками положить свой exeшник с dllками - не заработало,
та же ошибка.

Детали компа на котором писал:
Тип ЦП TripleCore AMD Athlon II X3 445, 3100 MHz (15.5 x 200)
Системная плата Asus M5A78L-M LX
Чипсет системной платы AMD 760G, AMD K10
Системная память 1792 МБ (DDR3-1333 DDR3 SDRAM)

Установлено:
ОС: Windows 7 x64 Service Pack 1
все обновления win 7
vcredist_x64 2008,2010,2012
vcredist_x86 2008,2010,2012

python.3.4.3 x86
PyQt4-4.11.4-gpl-Py3.4-Qt5.4.2-x32
py2exe-0.9.2.0 x86
pywin32-219.win32-py3.4

Тестировал на компах с ОС Windows 7 x64 и c Windows xp Service Pack 3

В системную переменную Path
все добавлено C:\Python34;C:\Python34\Scripts;C:\Python34\Lib\site-packages\PyQt4
советовали добавить переменную QT_QPA_PLATFORM_PLUGIN_PATH C:\Python34\Lib\site-packages\PyQt4\plugins\platforms
добавлял этот путь и так и в Path - не помогло
  • Вопрос задан
  • 2320 просмотров
Пригласить эксперта
Ответы на вопрос 2
Avernial
@Avernial
Разрабатываю научное ПО на языке Python.
Добрый день.

Попробуйте собрать при помощи py2exe вот такой пример:

Файл main.py:

from PyQt4.QtCore import *
from PyQt4 import QtGui
 
class HelloPython(QtGui.QWidget):
    def __init__(self, parent=None):
        super(HelloPython, self).__init__(parent)
        helloLabel = QtGui.QLabel("Say Hello To PyQT!")       
        helloLineEdit = QtGui.QLineEdit()
 
        mainLayout = QtGui.QGridLayout()
        mainLayout.addWidget(helloLabel, 0, 0)
        mainLayout.addWidget(helloLineEdit, 0, 1)
 
        self.setLayout(mainLayout)
        self.setWindowTitle("My Python App")
 
if __name__ == '__main__':
    import sys
 
    app = QtGui.QApplication(sys.argv)
 
    helloPythonWidget = HelloPython()
    helloPythonWidget.show()
 
    sys.exit(app.exec_())


Файл setup.py:
from distutils.core import setup
import py2exe

setup(windows=['main.py'], options={"py2exe": {"bundle_files": 1, "compressed": True, "includes": ["sip"]}})


Проверил на Windows 7-x64 и Windows Xp-x64.

python-3.4 устанавливал с официального сайта.
py2exe‑0.9.2.2‑cp34‑none‑win_amd64.whl и PyQt4‑4.11.4‑cp34‑none‑win_amd64.whl с сайта Python Extension.

Выглядит так, как будто у вас пакеты для разных платформ. Например если python для x86, а py2exe для x64.
Ответ написан
@LiguidCool
Скачай AutoIT и не майся дурью. Будет работать практически на любой машине с Win 2000 и выше. Если, конечно, цель не результат, а просто покраноглазить
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы