2016-04-27 64 views
0

有时,当我运行终端Python脚本一个Python实例打开了这是什么Python图标?

enter image description here

我matplotlib见过鬼导致此。关闭它的唯一方法似乎是关闭python终端。

这个实例究竟是什么,我的脚本执行后如何让它自动关闭?

+1

这是当您将python脚本编译为mac的二进制文件,并且您没有指定图标时。我以前看过很多次。我会将其作为答案张贴,但我没有更多的细节。 – DJMcMayhem

回答

0

PyCharm不会认为该脚本是完整的,直到它产生的任何弹出窗口关闭。当你运行matplotlib并弹出一个图时,这是很明显的。如果PyCharm在完成脚本后关闭了窗口,那么在您甚至可以查看图表之前,窗口会立即关闭。

有两种方法可以完成脚本。关闭弹出窗口,或单击PyCharm中的停止按钮。

3

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

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

有几个解决方案:

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

对于后者,instructions here (Dr. 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 

最终</dict>

<key>LSUIElement</key> 
<true/>  

返回二进制和修复权限之前,然后添加以下内容:

sudo chmod 644 Info.plist 
sudo plutil -convert binary1 Info.plist