2016-07-30 85 views
5

美好的一天!使用pyinstaller時丟失的dll文件

我使用python 3.5.2與qt5,pyqt5和sip14.8。 我也使用最新的pyinstaller bracnch(3.3.dev0 + g501ad40)。

我正在嘗試爲基本的Hello World程序創建一個exe文件。

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_()) 

起初,我曾經得到關於crt-msi的一些錯誤。所以我重新安裝了SDK和C++運行時並將它們添加到我的環境中。 但現在我不斷收到關於失蹤的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: 

我檢查和DLL文件都存在,其軌道設置錯誤。我也嘗試手動將它們添加到我的dist文件夾,但它沒有幫助。

我將非常感謝您的任何建議!

+1

'在你的exe文件中插入一個'dll'是很困難的。嘗試添加'作爲源'建設者的配置。從x導入y'不是''import x.y'或'import x.y as z'的東西' – dsgdfg

回答

14

這可能更像是一個解決方法,Pyinstaller可能需要修復。

我發現--paths參數指向包含Qt5Core.dllQt5Gui.dll等目錄幫助

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

它工作!我已經花了3天的時間,並且你的解決方案工作!謝謝! – shultz

+0

對我也一樣。非常感謝這個提示。我快要放棄它了。通過--paths工作。 – MrLeeh

+0

如果您使用虛擬環境,您還可以將--paths設置爲'venv \ Lib \ site-packages \ PyQt5 \ Qt \ bin'。 – MrLeeh

0

通常加入含unfound庫--Path參數指向目錄解決了這個問題。如果使用PyInstaller 3.3dev,命令字符串解析可能會有問題。這通常發生在路徑包含空格的情況下。在這種情況下,您可以修改PyInstaller生成的.spec文件中的pathex參數,然後使用PyInstaller運行它以構建可執行文件。

pyinstaller file_name.spec 

希望這將盡快修復.....