2016-07-30 52 views
5

Dzień dobry!Brakujące pliki dll podczas korzystania z programu piszącego

Używam python 3.5.2 z qt5, pyqt5 i sip14.8. Używam również najnowszej wersji narzędzia do zgrywania pynin (3.3.dev0 + g501ad40).

Próbuję utworzyć plik exe dla podstawowego programu Hello World.

from PyQt5 import QtWidgets 
import sys 

class newPingDialog(QtWidgets.QMainWindow): 

def __init__(self): 
    super(newPingDialog, self).__init__() 
    self.setGeometry(50, 50, 500, 300) 
    self.setWindowTitle("hello!") 
    self.show() 


app = QtWidgets.QApplication(sys.argv) 
GUI = newPingDialog() 
sys.exit(app.exec_()) 

Na początku miałem pewne błędy dotyczące crt-msi. Ponownie zainstalowałem środowisko wykonawcze SDK i C++ i dodałem je do mojego środowiska. Teraz jednak wciąż otrzymuję błędy o brakujących plików DLL (qsvg, Qt5PrintSupport)

6296 WARNING: lib not found: Qt5Svg.dll dependency of C:\users\me\appdata\local\programs\python\python35\lib\site-pac 
kages\PyQt5\Qt\plugins\imageformats\qsvg.dll 
6584 WARNING: lib not found: Qt5Svg.dll dependency of C:\users\me\appdata\local\programs\python\python35\lib\site-pac 
kages\PyQt5\Qt\plugins\iconengines\qsvgicon.dll 
6992 WARNING: lib not found: Qt5PrintSupport.dll dependency of C:\users\me\appdata\local\programs\python\python35\lib 
\site-packages\PyQt5\Qt\plugins\printsupport\windowsprintersupport.dll 
7535 WARNING: lib not found: Qt5PrintSupport.dll dependency of c:\users\me\appdata\local\programs\python\python35\lib 
\site-packages\PyQt5\QtPrintSupport.pyd 
8245 INFO: Looking for eggs 
8245 INFO: Using Python library c:\users\me\appdata\local\programs\python\python35\python35.dll 
8246 INFO: Found binding redirects: 

Sprawdziłem i istnieją zarówno bibliotek DLL i mieć ich drodze ustaw. Próbowałem też ręcznie dodać je do folderu dist, ale to nie pomogło.

Będę bardzo wdzięczny za wszelkie rady!

+1

'Wstaw 'dll' w twoim exe' jest trudny sposób. spróbuj dodać 'as source' do konfiguracji konstruktora. Rzecz 'from x import y' nie jest eual na' import x.y' lub 'import x.y as z' – dsgdfg

Odpowiedz

14

Może to być bardziej podobne obejście, a Pyinstaller może wymagać naprawy.

I okazało się, że --paths argumentu wskazującego do katalogu zawierającego Qt5Core.dll, Qt5Gui.dll itd pomógł

pyinstaller --paths C:\Python35\Lib\site-packages\PyQt5\Qt\bin hello.py 
+0

To zadziałało! Spędziłem na nim 3 dni, a Twoje rozwiązanie działało! Dziękuję Ci! – shultz

+0

To samo dla mnie. Bardzo dziękuję za tę wizytówkę. Byłem bliski rezygnacji z tego. Z --paths działa. – MrLeeh

+0

Jeśli używasz środowiska wirtualnego, możesz także ustawić -paths na 'venv \ Lib \ site-packages \ PyQt5 \ Qt \ bin'. – MrLeeh

0

Normalnie dodanie --Path argumentem wskazując katalog zawierający bibliotekę unfound rozwiązuje ten problem. Może wystąpić problem podczas analizowania ciągu komend, jeśli używasz PyInstaller 3.3dev. Zdarza się to zazwyczaj, jeśli ścieżka zawiera spacje. W takim przypadku możesz zmodyfikować argument pathex w pliku .spec wygenerowanym przez PyInstaller, a następnie uruchomić go za pomocą PyInstaller, aby zbudować plik wykonywalny.

pyinstaller file_name.spec 

Mam nadzieję, że to zostanie ustalona wkrótce .....