在OSX上调用python和Spyder的方法

kuz*_*roo 22 python macos finder spyder anaconda

我最近买了一台MacBook并通过Anaconda安装了Python.这是版本信息:

Python 2.7.6 |Anaconda 1.8.0 (x86_64)| (default, Nov 11 2013, 10:49:09) 
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
Run Code Online (Sandbox Code Playgroud)

我希望能够做到以下所有方面:

  1. 启动Spyder而无需通过Launcher应用程序(例如,通过在Spotlight和Quicksilver中输入内容)
  2. 从Finder运行Python代码,可能是双击我的.py文件或选择并按下Cmd-O
  3. 通过在Quicksilver中键入Python脚本的名称来运行Python代码(就好像它是一个常规程序)

这是我尝试过的:

  1. (没有;这里没有想法)
  2. 我将.py文件与/Users/kuzzooroo/anaconda/python.app/Contents/MacOS/python相关联,并使它们可执行(chmod u + x).当我尝试运行应用程序永远不会启动,我没有收到错误消息(不知道在哪里看)
  3. 使文件可执行并尝试从Spotlight运行它们.与#2相同的结果.

这是我可以做的:

  • 如果我在顶部有正确的shebang并且使文件可执行,则从终端窗口运行我的代码
  • 使用py2app生成应用程序.不幸的是,这种方法存在以下缺点:
    • 我经常修改我的脚本,并且不希望每次都运行py2app
    • 即使对于一个简单的脚本,生成的应用程序是7 MB
    • 要在某些上下文中运行应用程序,我必须在bundle中搜索实际的"Unix可执行文件"并运行它

一旦我有了这个工作,我就有兴趣做以下事情:
A.控制哪些脚本在运行时创建一个控制台窗口而哪些脚本没有
B.控制在脚本完成或等待用户时生成的控制台窗口是否消失(我)关闭它
然而,我怀疑一旦我弄清楚如何首先调用我的脚本,可能很容易弄清楚如何做这些(或者是否可能).

Tho*_*mas 63

要使Spoty可以从Spotlight或Finder调用:

  1. 通过在终端中运行来找到您的Spyder可执行文件的位置:

    which spyder
    
    Run Code Online (Sandbox Code Playgroud)

    ~/anaconda/bin/spyder如果您通过Anaconda安装Spyder,/opt/local/bin/spyder如果您使用的是MacPorts或类似的东西,这应该会产生.

  2. 创建spyderApplications目录中调用的文件并使其可执行.然后,用前一个命令的输出填充它,然后是&; exit:

    touch /Applications/spyder
    chmod +x /Applications/spyder
    echo -e '#!/bin/bash'"\n~/anaconda/bin/spyder &\nexit" >> /Applications/spyder
    
    Run Code Online (Sandbox Code Playgroud)
  3. 在终端 - >首选项 - >配置文件 - >"默认配置文件" - > Shell - >当shell退出时:选择"如果shell干净地退出则关闭"

可选的:

  1. 此处下载spyder图标并在预览中打开它.通过点击cmd + C复制其内容.

  2. 在Finder中,/Applications/spyder通过按cmd + I 找到并打开其"获取信息"窗格.用鼠标选择左上角的图标,然后点击cmd + V.


top*_*man 26

接受的答案有两个缺点:启动Spyder时出现控制台窗口,而且无法在Dock中保留spyder图标.通过为Spyder创建适当的Mac应用程序包可以避免这些drawbakcs,这非常容易.

要将/usr/local/bin/spyder3(which spyder3我的机器上的结果)转换为传统的Mac应用程序:

  1. 创建一个Mac应用程序包(基本上是一个包含可执行文件的文件夹结构):

    cd /Applications
    mkdir -p spyder.app/Contents/MacOS
    echo -e '#!/bin/bash'"\n /usr/local/bin/spyder3 $@" >> spyder.app/Contents/MacOS/spyder
    chmod +x spyder.app/Contents/MacOS/spyder
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在Contents文件夹(即spyder.app/Contents/Info.plist)中创建一个名为Info.plist的纯文本文件,其中包含以下内容:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
    <plist version="0.9">
    <dict>
    <key>CFBundleExecutable</key>
    <string>spyder</string>
    <key>CFBundleInfoDictionaryVersion</key>
    <string>3.1.4</string>
    <key>CFBundlePackageType</key>
    <string>APPL</string>
    <key>CFBundleSignature</key>
    <string>????</string>
    <key>CFBundleVersion</key>
    <string>3.1.4</string>
    </dict>
    </plist>
    
    Run Code Online (Sandbox Code Playgroud)
  3. (可选)创建应用程序图标,如接受答案的步骤4和5中所示.

Voilà,spyder突然变得更加Mac友好!

编辑:
人们可以通过以下方式进一步改善spyder的mac友好性:

  1. 防止在spyder图标旁边出现通用python火箭图标
    为此,在spyder中取消选中工具 - >首选项 - > iPython控制台 - >图形 - >激活(matplotlib)

  2. 使spyder成为.py文件的默认编辑器.
    这个更棘手.首先确保spyder.app/Contents/MacOS/spyder的内容读取

    #!/bin/bash
    /usr/local/bin/spyder $@
    
    Run Code Online (Sandbox Code Playgroud)

然后创建一个包含单个操作"执行shell脚本"的自动机脚本.将以下(bash)脚本粘贴到其中:

for f in "$@"
do
    open /Applications/spyder.app --args $f
done
if [ -z "$f" ]; then
    open /Applications/spyder.app --args ~
fi
Run Code Online (Sandbox Code Playgroud)

为输入数据选择"As argument",如下面的屏幕截图所示(截图中缺少"--args~",但是在没有任何文件的情况下启动spyder时需要避免错误). 自动贩卖脚本
例如,将此脚本另存为名为"SpyderOpener"的应用程序.

使SpyderOpener成为打开.py文件的默认应用程序(通过在.py文件上使用Finder"获取信息"对话框)


小智 5

导航到anaconda/bin,找到spyder(或IPython等),并将其拖到dock \xe2\x80\x94,但将其放在最后的文档部分中。然后你\xe2\x80\x99就可以轻松访问它,当你点击它时,Mac OS X将启动一个运行它的shell,它将出现在应用程序部分,这样你就可以通过以下方式将正在运行的应用程序向前推进:单击它。

\n


Jer*_*y T 2

最简单的一种是从https://github.com/spyder-ide/spyder/releases下载官方的 Spyder.app (选择与 Anaconda 中的版本匹配的版本,而不是最新的;lite 版本就足够了)。安装后您甚至可以将 .py 文件与此应用程序关联。

ps 我努力尝试制作自己的 Spyder.app,但当我启动应用程序时,它不接受文件路径作为参数。所以节省你的时间并使用官方的。