【问题标题】:Default file ending in Mac, Linux and Windows to run executable in the shell/terminal以 Mac、Linux 和 Windows 结尾的默认文件,用于在 shell/终端中运行可执行文件
【发布时间】:2013-04-02 17:28:38
【问题描述】:

我为 Mac、Windows 和 Linux 创建了 Python 脚本的可执行文件(通过 pyinstaller)。对于 Linux 和 Mac,我在 shell 中运行它们,因为它没有自己的界面:只需打开一个 shell 并输入程序的名称。

我想知道是否有办法使用某些文件结尾,所以如果用户点击程序,它将在 shell 或终端中自动执行。或者,我将不胜感激有关如何执行此操作的任何其他想法。

【问题讨论】:

  • 在 linux/mac 上,它与扩展无关,因为它是执行位。你的执行位设置了吗?双击它会发生什么?
  • 设置执行位只是必要条件。操作系统如何将特定文件与特定应用程序相关联(当您在 OS X Finder 等桌面 GUI 中单击它时)可能非常复杂。例如:arstechnica.com/staff/2009/09/metadata-madness
  • 当我双击它时,会弹出一个打开方式窗口。在 mac 上我可以选择在 shell 中打开它,但不能在 linux 中打开。在 linux 中,我只能通过键入它的名称从 shell 中调用它

标签: linux shell executable pyinstaller


【解决方案1】:

这样做的方法不是附加某个文件结尾,而是如注释中指出的那样,使文件可执行(chmod +x <file>)并将魔术字节添加到文件的开头以告诉系统如何执行。

魔术字节是#!,后面是可执行文件的路径。因此,对于 python 脚本,您可以在文件顶部添加以下内容:

#!/usr/bin/env python

【讨论】:

  • 谢谢,但我更多的是寻找一种解决方案,当在文件浏览器中单击它时,它将在 shell 中打开并执行可执行文件。我基本上想要实现的是使通过 pyinstaller 从 pyhon 脚本编译的程序更加用户友好
  • 基本上它应该像 Windows 上的 exe 文件一样工作;我使用 pyinstaller for windows 创建的 exe 文件会自动在终端中打开
  • 您可以尝试将命令行更改为 #!/usr/bin/gnome-terminal 或类似的东西,但这仅适用于 shell 脚本,而且移植性不强。
  • 是否可以将脚本编译成在 shell 中运行的 MacOS 的 .app 文件?
  • This question 可能对此有所帮助。
【解决方案2】:

好的,现在我终于找到了我的问题的解决方案。在文件浏览器中单击该程序后,您只需添加结尾.command 并使其可执行

例如,exampleprogram.command。点击它会执行shell中的程序

【讨论】:

  • 不幸的是,我发现这只适用于 MacOS X,不适用于 Ubuntu
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-11
  • 2018-04-02
  • 1970-01-01
相关资源
最近更新 更多