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

Posted

技术标签:

【中文标题】我在 python3.7/Windows 7 中编写的 Python 程序无法在 Windows XP 中运行【英文标题】:Python program I wrote in python3.7/Windows 7 won't run in Windows XP 【发布时间】:2021-11-15 08:12:50 【问题描述】:

我在 Windows 7 下编写了一个 python 3.7 脚本并使用 auto-py-to-exe 编译它。我可以在我的计算机上毫无问题地运行 .exe,但是当我的同事尝试在 Windows XP 下运行它时出现错误:“过程入口点 GetFinalPathNameByHandleW 无法位于动态链接库 Kernel32.dll 中”

这是因为 XP 不支持 python 3.7 吗?据我所知,XP 最多只支持 3.4,但我不能用 python 3.4 重写代码,因为那时我使用的库之一不受支持。

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

【问题讨论】:

根据该功能的MSDN 页面:支持的最低客户端 Windows Vista [桌面应用程序 | UWP 应用] 【参考方案1】:

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

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

DLL 是一个动态链接库,像 kernel32.dll 这样的文件有时只是一堆函数/过程/子例程,都集中在一个可移植文件中。

以原始方式,您可以使用文本编辑器打开 kernel32.dll 文件(如果需要,请复制)并搜索字符串“GetFinalPathNameByHandleW”,但您不会找到它。

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

我认为 GetFinalPathNameByHandleW 是在 Windows Vista 中引入的,所以从那里往前走就可以了。

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

【讨论】:

以上是关于我在 python3.7/Windows 7 中编写的 Python 程序无法在 Windows XP 中运行的主要内容,如果未能解决你的问题,请参考以下文章

spring中编程式事务控制

使用命令行在 Visual Studio 中编译为发行版

怎么在windows中编iphone\itouch程序。最好能是win7环境

Makefile,在 src 目录树中查找源代码并在构建文件中编译为 .o

在 mingw-w64/msys2 中编​​译的应用程序,“应用程序无法正确启动(0xc00007b”

三菱plc中编好的指令如何删除