这个Python 图标是什么?

Rya*_*abi 3 python matplotlib ghost

有时,当我在终端中运行 python 脚本时,会打开一个 python 实例

在此输入图像描述

我见过 matplotlib 和 Ghost 导致这个问题。关闭它的唯一方法似乎是关闭 python 终端。

这个实例到底是什么?如何让它在脚本执行后自动关闭?

mfi*_*tzp 6

在 OS X 上,只要您执行与 GUI 交互的操作,Dock 就会显示 Python 图标。最常见的原因是使用matplotlibGUI 后端(例如 PyQt)。当使用交互式后端(例如 PyQt)时,您通常会在调用后看到一个火箭图标,plt.show()该图标将保留在 Dock 上,直到窗口关闭并且与 GUI 交互的进程退出。

当您在 Python shell 中以交互方式工作时,图标停留在那里并不是因为终端仍然打开(或脚本仍在执行),而是因为 Python 进程仍然处于活动状态。这个过程可能在后台维护一个 GUI 事件循环。

有以下几种解决方案:

  • matplotlib可以使用plt.show(block=False)分离事件循环,这意味着一旦窗口关闭,图标就会消失。
  • 设置非交互式后端,例如matplotlib.use("Agg")完全避免创建窗口。当然,你什么也看不到。
  • 修改 Python.app.plist以抑制图标。

对于后者,此处(Drang 博士)的说明如下。请注意,这是针对系统 Python 的,对于其他位置,您需要在.plist其他地方找到:

cd /System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/

# NB the following file is binary, use a compatible editor or convert with
sudo plutil -convert xml1 Info.plist # Convert to XML
sudo chmod 666 Info.plist # Make editable
Run Code Online (Sandbox Code Playgroud)

然后在最后的前面添加以下内容</dict>

<key>LSUIElement</key>
<true/>    
Run Code Online (Sandbox Code Playgroud)

返回二进制并修复权限:

sudo chmod 644 Info.plist
sudo plutil -convert binary1 Info.plist
Run Code Online (Sandbox Code Playgroud)