基于Python 3.9的软件在Windows 7上无法工作。

18

我使用 Python3.9 制作了一个独立的软件,可以在我的电脑和另一台 Windows 10 电脑上正常运行,但是我尝试在一台 Windows 7 Ultimate 上运行该软件时出现了一些错误。

请注意,我使用 PyInstaller 绑定了所有所需的 Python 模块来制作软件。

这些错误如下:

  1. 错误加载 Python DLL'C:\Users\hp\AppData\Local\Temp_MEI19602\python39.dll'。LoadLibrary: 找不到指定的模块。
  2. 程序无法启动,因为您的计算机缺少 api-ms-win-core-path-l1-1-0.dll。尝试重新安装程序以解决此问题。

我该怎么做才能在 Windows 7 上运行此程序?


@basj - 首先,您在Windows 7上安装Python 3.9或3.10时使用的是哪种过程? - Simon Mourier
@Basj - 噢,所以你还没有尝试过任何东西,对吗? - Simon Mourier
@basj - 你能指出那个安装程序吗? - Simon Mourier
1
@Basj https://github.com/nalexandru/api-ms-win-core-path-HACK - Andry
1
实际上,使用api-ms-win-core-path-HACK似乎可以工作(我没有进行过广泛的测试):https://i.imgur.com/XliHYem.png @andry 你应该发表一个答案,在我看来 :-) - Simon Mourier
2个回答

14
时候到了,也许你应该学会如何从源代码构建:
讨论:https://www.reddit.com/r/Python/comments/rbhd2n/python_39_310_on_windows_7/
以上两种解决方案都使用了Wine项目中的代码来在Windows 7上模拟缺失的函数(PathCchCanonicalizeEx, PathCchCombineEx, PathCchSkipRoot)。
  • Windows 7和Windows Server 2003 R2的非官方Python安装程序。
    https://github.com/nalexandru/api-ms-win-core-path-HACK 获取的分发包中包含文件 api-ms-win-core-path-l1-1-0.dll

https://github.com/adang1345/PythonWin7

非官方的 Windows Python 安装程序。
这些安装程序是从发布在https://www.python.org/downloads/source/的源代码分发版构建,修补了一些生成脚本中的错误并包括调试符号和调试二进制文件:

https://github.com/adang1345/PythonWindows

PS:

关于 api-ms-win-core-path-l1-1-0.dll 的错误通常需要安装特定的vcredist_x86.exe/vcredist_x64.exe。但是在 Python 3.9 中出现此错误是因为该 DLL 是 Windows 8 的一部分。


@Basj 如果它存在的话,那么它已经被知道了。团队已经放弃支持,其中一个重要原因是操作系统制造商在不久的将来缺乏维护和安全更新。另一个原因是不断增加的支持多个操作系统和依赖项的工作量。换句话说,使用旧操作系统的人只能自己解决问题。因此,您可以选择信任第三方构建或自己构建。就像在Linux或Unix中一样。就是这样。 - Andry
@Basj 我认为这不会奏效。Python DLL 已经与 API DLL 中的一些功能有链接,而早期的操作系统版本中没有实现这些功能,因此会抱怨缺少导入表函数。它还会抱怨使用的函数,为什么要链接你首先不使用的函数,这没有意义。 - Andry
@Basj 您可以使用 Process HackerProcess Explorer 查找已加载到 Python 实例中的 DLL 列表。 - Andry
@Basj 我不熟悉 Windows 10 的加载器,但它可能以某种动态方式加载导入部分。 - Andry
2
你应该学习如何从源代码构建。有个有趣的故事:我需要构建自己的Firefox,因为他们删除了我用来给标签着色的一些CSS代码。现在构建系统(它在每次Firefox更新时都会出问题)升级到了python3.9,所以现在我必须编译python3.9才能编译Firefox,这样我才能改变标签的颜色。哦,我爱它。 - user136036

10
如果您查看Python文档,您会发现Python 3.9不支持Windows 7:
根据PEP 11的规定,Python版本仅在Microsoft考虑该平台处于扩展支持期间支持Windows平台。这意味着Python 3.9支持Windows 8.1及更高版本。如果您需要Windows 7支持,请安装Python 3.8。
您可以在这里阅读更多信息。

这是否意味着任何使用Python 3.9的软件都无法在Windows 7上运行? - Tushar Agarwal
@TusharAgarwal 是的。不幸的是,那是正确的。 - Jacob Lee
18
在Windows 7中,跳过侵犯用户隐私的KB更新很容易。在Windows 8和10中,无法跳过这种隐私侵犯...我不知道Python 3.9开发人员在思考什么,要孤立Windows 7,但结果非常糟糕。另一方面,从技术角度来看,Windows7仍然可以通过付费的扩展支持更新(ESU)得到维护,直到2023年(有一个变体可延长至2024年),为什么要屏蔽它?那么Python开发者会屏蔽Windows10 v1809及以上版本吗?这是没有意义的,不是吗?为什么还要屏蔽Windows7? - ClassicOcean
1
@ClassicOcean,没有任何故意“阻止”的行为。从python.org预构建的Python二进制文件恰好与Windows 7不兼容。可以轻松地从源代码构建任何Python版本,或者支付某人来完成这项工作。 - fpbhb
2
@Jacob Lee,几个月前,VSCode(Microsoft)也封锁了win7的安装。微软雇用了五名核心Python开发人员和更多的CPython贡献者:Python是否归属于微软?http://web.archive.org/web/20211027095944/https://pythonin1minute.com/is-python-owned-by-microsoft/,Python的创造者在2020年11月从退休中回归并加入了微软的开发团队。程序员不是政治家或律师,但他们有话要说。那些使用win10的人将在Python4.22封锁时受到政治影响,https://news.ycombinator.com/item?id=34712640 - ClassicOcean
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接