我正在分发一个嵌入 Python 2.7 的 Windows 应用程序(技术:包括带有 DLL 和 Lib 文件夹的 python27.dll + 'Python27' 目录,以及我的 .exe)。我还包括一个使用 C 扩展(基本上是 DLL 的 .pyd 文件)的自定义 Python 包。
我知道我需要有版本 9.0.21022.8 的 msvcr90.dll 和相关的清单。我可以将 msvcr90.dll + manifest 放在我的 .exe 文件旁边,我可以正常工作,没有问题。但是为了使用我的自定义 Python 包,我发现我还需要在与包的 .pyd 文件相同的级别包含 msvcr90.dll + manifest(如果它们不存在,则应用程序在 PyImport_ImportModule 期间崩溃)。我不明白为什么 .pyds 无法“看到”位于树上方的 msvcr90.dll。
我知道我可以(可能)通过在目标机器上运行 MS Visual C Redistributable 包来绕过这个......这实际上安装了 MSVCR DLL + 清单,因此它在系统范围内可用。但是我不想要求我的用户运行它,也不想尝试将其安装在正确的位置并自己处理版本控制等。