使用pynsist捆绑PyQt4应用程序

时间:2016-01-11 17:11:01

标签: python pyqt4 python-3.5 pynsist

我正在尝试使用Pynsist为我的python应用程序创建一个安装程序,它使用PyQt4。我想捆绑python安装,因此,我必须使用python 3.5,因为pynsist仅支持python 3.5的捆绑。 我使用了一个全新的WinPython 3.5.1.1安装,我安装了所有必需的软件包,并在新安装的Windows 10虚拟盒中测试安装程序。为了构建安装程序,我在Windows 7计算机上使用WinPython 3.5.1.1环境。

但是当我启动已安装的应用程序时,导入QtGui或QtCore时出错:

ImportError: DLL load failed: The specified module could not be found.

我在互联网上发现的这个错误的大多数问题是由python无法找到dll引起的,但是QtGui4.dll文件存在于pkgs \ PyQt4文件夹中,并且还将其复制到应用程序的主文件夹中或者python文件夹没有改变任何东西。

我还尝试使用bundle和python 3.5.1作为最小示例导出pynsist存储库中的示例PyQt4应用程序,但是我得到了相同的错误。

在QtCore.pyd上使用Windows 10环境中的依赖性walker产生: enter image description here 还有很多" API-MS-WIN * .DLL"依赖项缺失,我只是滚动到它最接近的部分"有趣"。

1 个答案:

答案 0 :(得分:1)

缺少的dll文件是msvcp140.dll

通过将此文件放入pynsist_pkgs文件旁边的.cfg目录,可以将此文件包含在安装中。

要在运行时加载它,必须将pkgs添加到路径中。这可以使用包含以下内容的extra_preamble文件来完成:

os.environ['PATH'] = pkgdir + os.pathsep + os.environ.get('PATH', '')