我有一个 Python 程序,用于os.system
执行各种命令。(它不能使用subprocess
,因为它必须一直向后兼容到 Python 2.0。)
在 Windows 上,有时该命令会引用异常目录中的 DLL,因此我会弹出臭名昭著的“程序无法启动,因为 X.dll 丢失”错误弹出窗口。
我的问题不是关于如何让命令找到它的所有 DLL。我已经知道该怎么做。我想知道的是,当缺少 DLL 时,如何告诉 Windows不显示此对话框?相反,子进程应该将错误消息打印到 stderr(已被重定向到os.system
调用中的文件)并不成功退出(导致os.system
返回错误代码)。这样我的程序就可以捕获错误并以自己的方式报告它,而不是挂起直到有人来点击确定。
MSDN 通常是我的朋友,但这次我只得到关于如何处理特定缺失 DLL 的建议,这很好,但不是我这次需要的。
重申一下,这是一种极度向后兼容的情况:我需要一个可以与 Python 2.7 或任何旧版本一起使用的解决方案,一直到 2.0。它还需要在所有仍然流行的 Windows 版本(XP、Vista、7、8)上工作。使用更旧的Windows 是非常可取的,但不是 100% 需要。此外,不能选择以任何其他语言编写的第三方模块和帮助程序。(如果这是唯一的方法,我想一个.BAT
文件就可以了。)