【问题标题】:Is it possible to package a python application with its separate terminal?是否可以使用单独的终端打包 python 应用程序?
【发布时间】:2020-06-10 20:52:25
【问题描述】:

我希望我的程序有一个可执行文件(Windows、MacOS、Linux),它有自己的终端窗口,用户可以在其中输入。我不想让用户安装模块或除此之外的任何东西这个可执行文件。你可以说我的程序的 UI 是一个终端窗口。有可能吗?用什么?

我基本上希望我的应用程序的 GUI 是一个终端窗口。

【问题讨论】:

  • 恐怕您需要创建自己的 GUI 来获取用户输入。使用操作系统的本机终端有什么问题?
  • 是的,有几种不同的方法可以实现您正在寻找的结果。 “如何”方面是题外话:它太宽泛了,而且 Stack Overflow 不能替代指南、教程或文档。
  • 我还没有找到任何关于如何将终端作为 UI 的信息。有关于冻结应用程序的信息,但它们通常假定您已制作了 GUI。
  • 这就是我问的原因,为什么不直接使用操作系统的本机控制台/终端?所有操作系统都带有一个内置的控制台/终端,用户不需要安装任何东西。见one of the answers

标签: python executable cx-freeze


【解决方案1】:

要为您的程序创建命令行界面,您可能需要使用标准 Python 库中的 argparse 之类的东西。您可以尝试使用许多其他功能丰富的命令行界面模块(例如,单击)。您可以为用户设计命令行交互,包括输入和输出、菜单等。

一旦您构建了应用程序,使其可移植的一个不错的选择是PyInstaller 模块。如果您在调用它时设置了 --onefile 选项,它将生成一个可以轻松与用户共享的 .exe 文件。如果您在调用 PyInstaller 时还设置了 --console 选项,那么您的 Python .exe 应用程序将与 stdin/stdout 交互。在 Windows 上,这将是一个 cmd 窗口。

如果用户通过 GUI 调用您的 .exe(例如,双击其图标),将打开一个 Windows CMD 窗口。但是,如果您希望该窗口保持打开,则需要使用某种“无限”/“强制”设计来创建应用程序,这种设计在用户明确退出之前永远不会完成执行。

如果用户改为从已打开的 Windows CMD 终端运行 .exe,则该窗口将始终保持打开状态。

【讨论】:

  • 我已经更新了我的答案以增加更多的清晰度和上下文。
  • 对,argparse 不会创建 GUI 或终端窗口。它是为用户设计和管理输入/输出体验的工具。使用 PyInstaller 构建 .exe 时使用 --console 选项可确保 Python 应用程序中的标准输入/标准输出实际显示在 CMD 窗口中。
  • 感谢这增加了急需的清晰度。我会试试你说的。谢谢!
【解决方案2】:

我怀疑你正在寻找 curses,如果你被 Microsoft Windows 卡住了,我怀疑你正在寻找 UniCurses。

许多终端模拟器允许您使用命令行选项来启动它们,该选项指定要在该模拟器中运行的命令,而不是您的默认 shell。

【讨论】:

    猜你喜欢
    • 2019-11-17
    • 1970-01-01
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    • 2014-02-24
    • 2020-12-30
    • 1970-01-01
    • 2017-11-26
    相关资源
    最近更新 更多