尝试使用pyqtdeploy为Windows部署一个简单的PyQt5应用程序。我通过Qt5-vs2015 qmake成功生成了.cpp文件和Makefile。
使用Native VS2015 cmd nmake生成最终的.exe文件,但是nmake输出致命错误LNK1181,说无法打开QtGui.lib或sip.lib。
在Makefile内部。释放LIBPATH到.lib文件,这些文件在我的系统上不存在。 Makefile的一部分。发布:
LIBS = /LIBPATH:C:\cdev\Python35\Lib\site-packages\PyQt5 QtGui.lib QtCore.lib QtWidgets.lib /LIBPATH:C:\cdev\Python35\libs C:\cdev\Python35\libs\python35.lib /LIBPATH:C:\cdev\Python35\Lib\site-packages sip.lib advapi32.lib shell32.lib user32.lib ws2_32.lib ole32.lib oleaut32.lib C:\cdev\Qt\5.8\msvc2015_64\lib\Qt5Widgets.libC:\cdev\Qt\5.8\msvc2015_64\lib\Qt5Gui.lib C:\cdev\Qt\5.8\msvc2015_64\lib\Qt5Core.lib
如果我在pyqtdeploy中排除这些Qt模块,nmake会成功编译应用程序,但它不会有gui。
这些qt / sip .lib文件在哪里?我只能用pyd扩展名找到其中一些。
使用PyQt 5.8, pyqtdeploy 1.3.2, 啜饮4.19.2, Qt 5.8, Windows 10上的python 3.5.3
答案 0 :(得分:0)
安装Visual Studio 2017社区版或任何最新版本。请记住安装SDK包以获取所需的标题等。
安装后,应从以下路径找到vcvarsall.bat:
> C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat
已安装的Qt SDK版本5.8.0
我必须修补qalgorithms.h所以它适用于VS 2017:
> https://codereview.qt-project.org/#/c/177743/
> Download the .h file and replace it, make a backup just in case from the old version
添加了一个名为INCLUDE的新ENV变量,以便编译器找到所有必需的头文件,如下所示:
> C:\Program Files (x86)\Windows Kits\10\Include\10.0.15063.0\ucrt;
> C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include;
> C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include;
现在您应该已安装所需的标头和窗口库。接下来是pyqtdeploy
> pip install pyqtdeploy
来自pyqtdeploy文档:
"pyqtdeploy requires these to be compiled ready for static linking:
-> sip module (an extension module, written in C.)
-> pyqt module (an extension module, written in C.)"
这意味着从源头编译这些东西的时间。获取这两个组件的源包,并按照此处说明的说明进行操作:
https://stackoverflow.com/a/40779370
完成编译和安装后,从sip和PyQT目录中复制所有必需的.lib文件,并将它们放在一个位置,以便链接器找到它们。
> sip: <sip-sourcedir>\siplib\sip.pyd & sip.lib
> PyQT5: <component>\release\<component>.lib
> sip libs I copied to python\site-packages\
> PyQT5 libs I copied to python\site-packages\PyQt5
运行vcvarsall.bat并像这样启动pyqtdeploy:
> "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x86
> pyqtdeploy
相应地配置您的设置 - &gt;打造!
使用QT SDK中的windeployqt.bat将必要的DLL文件从QT SDK复制到构建目录
> C:\Qt\<version>\msvc2015\bin\windeployqt.bat -h
之后遇到的问题:
> "Application failed to start because platform plugin “windows” is missing"
> The libEGL.dll was missing. Run windeployqt with --compiler-runtime flag
我希望这些指南可以帮助您解决部署程序的问题!