pyinstaller打包的软件(带自定义dll)无法在其他电脑运行

本文介绍使用PyInstaller打包Python项目时遇到的DLL依赖缺失问题及解决方案,包括使用Dependency Walker检查DLL依赖,并手动添加缺失的DLL,以及解决C++ dll执行库依赖问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        前面的文章介绍了如何用pyinstaller打包python项目。然而打包好的软件在有些电脑(配置了各种环境的电脑)上能运行,有些电脑不能运行。首先介绍一下我的项目:python3.6+pyqt4+python-opencv+自定义dll。前面三个都没有问题,就是因为带了自带的dll,无法运行。下面,将介绍一下我遇到了哪些问题,又如何解决这些问题。

         1.软件找不到dll,具体错误如下图。显示找不到根目录底下的dll。这是因为dll所依赖的库没有打包完整,所以无法导入。我使用的是Dependency Walker查询dll的依赖。

下载地址为:http://www.dependencywalker.com/depends22_x64.zip

使用教程为:https://blog.youkuaiyun.com/swort_177/article/details/5426848

       使用软件后,可以看到dll所依赖的几个dll。  其中Lasso.dll是我自己生成的dll,而下面的几个dll是它的依赖。这时你可以发现有几个dll,pyinstaller已经帮我们打包到dist中。我的是opencv_world320.dll还没有被打包进去。所以去D:\opencv\opencv3.2\build\x64\vc14\bin下面将dll复制进dist里面。其他的,大家可以根据自己项目所缺的添加。Dependency Walker会告诉我们所缺的dll在我们计算机中的地址,右击下图中的dll即可。

         2.dll的依赖补全后,可以成功导入。但是调用dll中函数的时候,还是会出错。我的是软件直接崩了(这里没有加异常捕获)。这里的问题是dll执行库的问题,我的dll是C++代码打包而成的,用的是vs2015,所以,电脑还缺一个vs2015的C++库。这里有两个方法,你可以直接安装vs2015,对于开发人员来说,vs2015基本都有。如果不想装vs2015,就装Visual C++ Redistributable for Visual Studio 2015,这是微软提供的官方库。大家可以根据自己打包的软件找相应的包,比如用vs2013打包的dll,就装Visual C++ Redistributable for Visual Studio 2013。

下载地址:https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=48145

         解决这两个问题后,我的软件可以在其他win10电脑上运行了。至于win7的还没有尝试,可以等我后面更新的博客。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值