TaskScheduler 中的 Pyinstaller *.exe

Pyinstaller *.exe in TaskScheduler

我创建了一个小 python 程序并使用 --noconsole 选项将其冻结为 *.exe 文件。当我 运行 程序正常工作时。但是当我把它放在启动时 运行 的任务调度程序中时,它就不再工作了。

该程序没有ui。我知道它不起作用,因为它没有写入日志文件。程序中的路径是绝对的。

知道是什么导致了这个问题吗?

您需要进行一些故障排除以缩小问题范围。我可以分享一些技巧。

  1. 确保您有一个用于未捕获异常的异常处理程序(在最顶部),以便您将 ose 错误记录到文件中。如果你没有,你将永远不知道为什么你的程序会崩溃。确保如果你添加它,你会在记录异常后重新抛出异常,以便 os 知道它崩溃了。
  2. 打开任务计划并手动运行任务。确保任务允许 运行 手动(在配置中)。如果允许手动运行,那么自动运行应该没有问题。
  3. 与您运行一起执行任务的用户可能与您手动运行与其一起执行任务的用户不同。您可以在尝试找出问题时尝试删除 --noconsole 选项。如果您的记录器在需要的地方没有写权限是一个问题,您将不会在日志中看到任何内容,但可以在控制台中看到消息。
  4. 确保任务的工作目录是正确的。默认情况下,它应该使用应用程序所在的同一目录,但如果输入了路径,则可能会导致问题。

除了 Timothy 的想法,确保选项 运行 用户是否登录 被激活,如果需要,输入用户密码(申请时).

当您 运行 启动任务时, Windows session 尚未打开因此任务可能 运行 如果 Windows 没有信息如何为它打开 session。

感谢您的帮助。我发现了问题。我试图获取 Duplicati(备份软件)的信息,但服务器只有在有人登录时才会启动。所以问题不是我的程序,而是其他程序的启动。

通过记录我的程序解决了这个问题。