在WINDOWS 10上使用PYINSTALLER捆绑Python代码,以便可执行文件在WINDOWS 7系统上运行。Exe不运行,“加载Python DLL时出错”

2024-05-10 01:08:01 发布

您现在位置:Python中文网/ 问答频道 /正文

前面还有很长的帖子,但我想确保尽可能彻底地回答我的问题,以及到目前为止我已经尝试过的内容。标题基本上描述了我的整个问题

我使用64位Windows10系统捆绑代码,而目标系统是64位Windows7企业系统SP1。目标Windows 7 PC是公司网络的一部分,因此如果没有it部门的明确同意,安装软件可能会有点困难

我用Python编写的代码通过使用PyVISA的RS232端口从连接到目标PC的Fluke万用表读取数据,并通过该程序让该PC上的用户知道使用万用表测试的某些组件是否符合规范。结果将保存在本地和网络驱动器的外部.csv文件中

py代码在Win10系统上运行得非常好,甚至我在Win10 PC上创建的可执行文件也能正常工作

但是,一旦我将所有可执行文件复制到运行Win7的目标PC上,应用程序就会完全拒绝运行

PyInstaller的文档(特别是here)提到,这种Win10/Win7组合可能会有问题,第2点和第3点提到,将所有相关的.dll文件从Win10复制到最终捆绑包可能是实现这一点的方法

然而,我仍然有一些问题。我在Win10 PC上安装了Windows软件开发工具包(SDK),以便能够提取包中包含的所有相关.dll

我创建了一个文件夹,其中包含相关的.py代码、相关的.spec文件和一个子文件夹(称为“驱动程序”),其中包含所有驱动程序。在以管理员身份运行的CMD窗口上,使用以下代码创建.spec文件

pyi-makespec -F --add-binary "Drivers/*.dll;." v0.11.py

接下来,我运行.spec文件,如下所示

pyinstaller --clean v0.11.spec

这将创建所需的文件,CMD的输出具有这些特定的警告

8599 WARNING: lib not found: api-ms-win-core-path-l1-1-0.dll dependency of c:\python\python 39\python39.dll
... more code ...
18280 WARNING: Hidden import "pkg_resources.py2_warn" not found!
18280 WARNING: Hidden import "pkg_resources.markers" not found!

生成的捆绑包在我的Windows 10 PC上运行得很好。当我将所有这些文件下载到相关的Windows 7计算机时,会弹出一个空白的CMD窗口,在短时间内显示以下错误不到一秒钟,然后退出I managed to take a print screen of this CMD window

请注意指定此错误的文件夹如何包含所需的python39.dll文件。 另一方面,如果我创建的.spec文件没有-F标志,Windows7 PC上的CMD窗口只会短暂闪烁,没有任何警告或错误。没有显示任何内容

我的问题如下:

  1. 当使用-F标志创建一个单文件可执行文件时,为什么它不能检测到所需的.dll文件,尽管该文件实际上存在
  2. {a3}的第6点提到,在Windows 10上构建并在Windows 7目标系统上运行的所有相关驱动程序都需要通过SDK安装到“C:\Program Files(x86)\Windows Kits\10\Redist\ucrt”的驱动程序。我安装的SDK在此文件夹中没有相关文件,但我发现了以下文件:“C:\Program files(x86)\Windows Kits\10\Redist\10.0.19041.0\ucrt\DLLs\x64”。还有另一个名为x86的文件夹,但由于这两个系统都运行64位Windows,我想我不应该也包括x86文件。我是否包括相关的司机

感谢您通读这篇文章,也提前感谢您


Tags: 文件代码py文件夹cmd可执行文件目标windows