2012-07-04 18 views
5

Korzystanie najnowszy pyinstaller na Windows 7, aby autonomicznego exe (-f), podczas uruchamiania exe:Pyinstaller: ImportError: Nie można zaimportować nazwy QtGui

ImportError: cannot import name QtGui

w katalogu haczykami pyinstaller nie ma specjalnego traktowania dla PyQt4, ale nie PySide.

Oczekiwanie na obejście tego problemu lub próby wypróbowania.

Środowisko
Okna 7 64-bitowy
Pythona 2,7 32-bitowy
PYTHONHOME = c: \ python27
PYTHONPATH = c: \ python27 \ lib
PYTHONLIB = c: \ python27 \ bibliotekami \ python27.lib c: \ python27 \ lib \ site-pakiety

kroki
1. Dodać PySide z http://releases.qt-project.org/pyside/1.1.1/PySide-1.1.1qt474.win32-py2.7.exe
2. rozpakować https://github.com/pyinstaller/pyinstaller/zipball/develop c: \ pyinstaller1.5.1
3. Uruchomienie polecenia u przeciw .py pliku zawierające tylko: [. ... a QtCore lub OR]

from PySide import QtGui 

Run

c:\pyinstaller1.5.1>pyinstaller.py -F import_test.py 
108 INFO: wrote c:\pyinstaller1.5.1\import_test.spec 
171 INFO: Testing for ability to set icons, version resources... 
296 INFO: ... resource update available 
312 INFO: UPX is not available. 
4321 INFO: checking Analysis 
4382 INFO: checking PYZ 
4430 INFO: checking PKG 
4446 INFO: building because c:\pyinstaller1.5.1\build\pyi.win32\import_test\import_test.exe.manifest changed 
4446 INFO: building PKG out00-PKG.pkg 
16782 INFO: checking EXE 
16782 INFO: rebuilding out00-EXE.toc because pkg is more recent 
16782 INFO: building EXE from out00-EXE.toc 
16799 INFO: Appending archive to EXE c:\pyinstaller1.5.1\dist\import_test.exe 

c:\pyinstaller1.5.1>dist\import_test.exe 
Traceback (most recent call last): 
    File "<string>", line 23, in <module> 
ImportError: cannot import name QtGui 

Uwaga

 
At the end of the PySide install (as admin), this message: 
    close failed in file object destructor: 
    sys.excepthook is missing 
    lost sys.stderr 
If that is about post install it can be handled manually: 
    c:>python.exe c:\Python27\Scripts\pyside_postinstall.py -install 
    Generating file C:\python27\qt.conf... 
    PySide installed in c:/python27/Lib/site-packages/PySide... 
    The PySide extensions were successfully installed. 

Odpowiedz

1

Obejście problemu. To działało:

# Various imports, whatever, using normal sys.path, for example: 
import os, sys, re, time, random 
import subprocess, psutil 

# Save sys.path 
sys_path_saved = sys.path 

# Limit sys.path for PySide import 
sys.path = ['c:\\python27\\lib\\site-packages'] 

# PySide imports with limited sys.path 
from PySide  import QtGui, QtCore 
from PySide.QtGui import QApplication, QLineEdit 
from PySide.QtCore import QSettings, Qt 

# Reset sys.path to original 
sys.path = sys_path_saved 

# Remainder of code... 

Pyinstaller 1.5.1 powinien zrobić doskonałą pracę lokalizowania współzależności, a często robi. Jednak nie powiodło się wiele prób użycia jego pathex lub hiddenimports .spec. Modyfikowanie zmiennych środowiskowych również nie powiodło się. Czasami wyodrębnianie różnych plików modułów ręcznie z .egg czasami działało.

Jednak dla importu PySide powyższe ograniczenie czasowe sys.path było obejściem, które zadziałało.

Aktualizacja: Niestety exe działa tylko na komputerze z zainstalowanym Python/Pyside, nie działa na XP bez Pythona.

Powiązane problemy