Domanda

Sto cercando di fare un semplice ciao-mondo app eseguibile python gui in Windows utilizzando PyQt. Così ho fatto il file pyqt.py

import sys
from PyQt4.QtGui import *
app = QApplication(sys.argv)
button = QPushButton("Hello World", None)
button.show()
app.exec_()

Ho cercato di usare py2exe con il seguente script setup.py:

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

setup( console=[{"script": "pyqt.py"}] )

(ho avuto l'errore No module named sip prima, ma è risolto grazie alla pagina Py2exeAndPyQt).

Ora ho l'eseguibile e quando provo a farlo funzionare, ottengo il seguente errore:

Traceback (most recent call last):
  File "pyqt.py", line 2, in <module>
  File "PyQt4\QtGui.pyc", line 12, in <module>
  File "PyQt4\QtGui.pyc", line 10, in __load
ImportError: No module named QtCore

Come posso risolvere il problema? TIA

È stato utile?

Soluzione

Si può fare qualcosa di simile, non è necessario import *.

py2exe_opciones = {'py2exe': {"includes":["sip"]}}
script = [{"script":"pyqt.py"}]

setup(windows=script,options=py2exe_opciones)

E ora sarà il programma dovrebbe funzionare. Ho avuto lo stesso errore.

Qui può leggere di più.

Altri suggerimenti

Aggiungi al from PyQt4.QtCore import * pyqt.py.

Non sono sicuro che il motivo per cui non è stato auto-incluso, ma penso che abbia qualcosa a che fare con QtCore solo utilizzato da QtGui, che è un C ++ lib ... Come, py2exe solo rileva automaticamente le dipendenze python ... Quindi, è necessario importare manualmente.

Questo è un esempio

from setuptools import setup
import py2exe
from glob import glob

SETUP_DICT = {
    'windows': [{
        'script': 'main.py',
    }],

    'zipfile': 'lib/library.zip',

    'data_files': (
        ('', glob(r'C:\Windows\SYSTEM32\msvcp100.dll')),
        ('', glob(r'C:\Windows\SYSTEM32\msvcr100.dll')),
    ),

    'options': {
        'py2exe': {
            'bundle_files': 3,
            'includes': ['sip', 'PyQt4.QtCore'],
        },
    }
}

setup(**SETUP_DICT)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top