【问题标题】:How to convert .py to .exe and run as a background function on windows while retaining args?如何将 .py 转换为 .exe 并在 Windows 上作为后台函数运行,同时保留 args?
【发布时间】: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


【解决方案1】:

如果有帮助的话,这就是我为我的 EXE 文件 whit Pyton 带来参数的方式。该程序检查是否有一个参数,它不是在我处于开发模式时,但是当我运行 EXE 时,我可以使用参数运行它,并且变量 myPath 是从“外部”填充的:

import sys

if len(sys.argv) < 2:
    myPath = ''
else:
    myPath = sys.argv[1]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-22
    • 1970-01-01
    • 1970-01-01
    • 2020-09-22
    • 2016-05-17
    • 2020-11-06
    相关资源
    最近更新 更多