如何在osx上使python脚本可执行?

时间:2016-04-12 05:30:00

标签: python macos shell executable double-click

我只想将我的脚本作为应用程序。双击并运行而不是在终端中运行。我以前用automator完成了它,但是现在,在capitan上它不起作用。它只是在没有解释的情况下给出错误。

当我尝试使用automator时,我收到此错误:

"The action “Run Shell Script” encountered an error."

我也尝试了下面的技巧,但我仍然无法做到这一点。

#!/usr/bin/env python

chmod +x script.py
  
    

解决:

         

经过这两个步骤。我将“打开方式”更改为终端仅用于此     文件并更改了#!/usr/bin/env python,它有效。但如果没有以下两个步骤,它就无法运行,你需要全部遵循     脚步。

  
     

在代码的开头添加#!/usr/local/bin/python。然后跑   终端中chmod +x myscript.py。之后更改应用程序   打开终端。

     

它对我有用。

4 个答案:

答案 0 :(得分:4)

我已经通过

更改了模式

sudo chmod +x file-name.py

然后在 file-name.py

之上添加以下行

#!/usr/bin/env python

然后通过运行./file-name.py命令运行该文件,它运行正常。

答案 1 :(得分:2)

假设安装了Python,这应该可行:

  

https://docs.python.org/2/using/mac.html

     

选择PythonLauncher作为打开脚本的默认应用程序   (或任何.py脚本)通过finder Info窗口并双击   它。 PythonLauncher有各种首选项来控制脚本的方式   推出。选项拖动允许您更改一个   调用,或使用其“首选项”菜单全局更改。

附录:

  

http://docs.python-guide.org/en/latest/starting/install/osx/

     

Mac OS X的最新版本El Capitan附带了Python 2.7   的盒子。

     

您无需安装或配置任何其他内容即可使用Python。   话虽如此,我强烈建议您安装   在开始之前,在下一节中描述的工具和库   构建用于实际使用的Python应用程序。特别是你   应始终安装Setuptools,因为它使您更容易   使用其他第三方Python库。

     

OS X附带的Python版本非常适合学习,但是   这不利于发展。

ADDENDUM 2:

Apple对El Capitan(包括System Integrity Protection)进行了一些更改,这些更改可能导致安装失败,臭名昭着的#34;没有找到安装的软件"。例如:

替代方法:

使用Homebrew。这正是我上面引用的Installing Python on Mac OS X推荐的内容:

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

$ vi ~/.profile => 
...  
export PATH=/usr/local/bin:/usr/local/sbin:$PATH

$ brew install python

如果这对你不起作用,请告诉我。

答案 2 :(得分:0)

快速逐步创建可点击的.app以启动python脚本。

启动Apple ScriptEditor(位于/ Applications / Utilities /中),然后在编辑器中键入以下内容:

tell application "Terminal"
    do script with command "python /path/to/your/script.py"
end tell

之后,只需点击保存并选择另存为应用程序即可。

Ps .:如果阅读此书的任何人都知道如何摆脱启动.app时打开的“终端”窗口,请告诉我。

如果您想获得更高级的知识,请查看Platypus

答案 3 :(得分:0)

@https://stackoverflow.com/users/7885903/lucas-mendes-mota-da-fonseca

要隐藏终端窗口,我相信您可以将.py重命名为.pyw并进行调用。

https://stackoverflow.com/a/34739687/6713477