Python 我在 python3.7/Windows 7 中编写的程序不会在 Windows XP 中 运行

Python program I wrote in python3.7/Windows 7 won't run in Windows XP

我在 Windows 7 下写了一个 python 3.7 脚本,并使用 auto-py-to-exe 编译了它。我可以 运行 .exe 在我的电脑上没有问题,但是当我的同事试图 运行 它在 Windows XP 下时出现错误:“过程入口点 GetFinalPathNameByHandleW 无法位于动态 link 库 Kernel32.dll"

这是因为XP不支持python3.7吗?据我所知,XP 最多只支持 3.4,但我无法用 python 3.4 重写代码,因为我使用的其中一个库不受支持。

有什么方法可以让它在 XP 上运行还是其他问题?

这些类型的错误消息意味着程序正在寻找“内部”指定文件(在本例中为 kernel32.dll)试图找到一个名为 function/procedure 到 运行 的 'GetFinalPathNameByHandleW' 并没有找到它。

要么是程序调用了错误的不存在的函数,要么是库文件中没有它。事情在某处不匹配。

DLL 是一个动态 Link 库,像 kernel32.dll 这样的文件有时只是一堆 functions/procedures/subroutines 全部集中到一个可移植文件中。

以一种原始的方式,您可以使用文本编辑器打开 kernel32.dll 文件(如果您愿意,可以复制一份)并搜索字符串 'GetFinalPathNameByHandleW',但您不会找到它.

因此您的程序正在调用 DLL 中的一个函数,但该函数在 Windows XP kernel32.dll 中不存在。

我认为 GetFinalPathNameByHandleW 是在 Windows Vista 中引入的,因此从那里继续前进会很好。

如果您希望您的程序在 XP 上运行,您需要坚持使用 XP 的功能,而 GetFinalPathNameByHandleW 不在其中,因此会出现错误。