【发布时间】:2022-04-21 19:40:35
【问题描述】:
我正在寻找运行一个 python 脚本,该脚本根据提供给它的各种参数通过子进程调用命令。为了易于使用,能够将其用作从 cmd 运行的可执行文件将是很有价值的。我想知道是否可以从 .py 转换为 .exe,使用“mypycode.exe args1 args2”从 cmd 运行程序,然后让它在后台运行并能够在 cmd 继续运行时关闭它?
使用 subprocess.DEVNULL 我可以在代码循环时阻止进程打开新的 cmd 窗口,但是如果我关闭 cmd 窗口,程序就会退出。
我也研究过从子进程中使用 Popen,但似乎它可能会删除转换为 .exe 的能力以及可能传递参数的能力,除非我理解不正确。
我也尝试过使用 -w 标志简单地使用 pyinstaller 来运行进程而不会弹出 cmd 窗口,但是这会使程序崩溃并给出错误“无法执行脚本 mypycode”。
我希望能够从 cmd 调用 .exe 并基本上启动进程并允许我继续使用 cmd 或关闭它并让进程在后台继续。
到目前为止,我要么在调用 mypycode.exe 后无法使用 cmd,并且在 cmd 关闭时也终止进程,要么我收到前面提到的错误,即它无法执行。
【问题讨论】:
-
我认为您的问题是在问多个问题。可执行文件查看:stackoverflow.com/questions/27784271/…,后台问题查看:superuser.com/questions/1069972/…
-
不幸的是,我不相信这些都解决了我的问题,第一个处理使用 setuptools 打包 .py 文件,这不是必需的,因为我只有一个文件需要是 .exe 而不是than 和 .exe 是指一个包。第二个链接解释了如何隐藏 cmd 窗口,但需要比首选更多的努力(理想情况下,我想简单地从其位置调用“mypycode.exe args1 args2”)。 WScript 似乎也不想在我的系统上工作,我最好不要提出进一步的问题来解决这个问题。
-
向我们展示您到目前为止的尝试。
-
目前我正在使用 pythonw.exe 并将我的脚本保留为 .py,但是如果有人输入无效参数,这不允许打印我的错误消息。
标签: python windows cmd exe pyinstaller