有时当我在终端中运行 python 脚本时,会打开一个 python 实例
我已经看到 matplotlib 和 ghost 导致了这个。关闭它的唯一方法似乎是关闭 python 终端。
这个实例到底是什么?如何在我的脚本执行后自动关闭它?
有时当我在终端中运行 python 脚本时,会打开一个 python 实例
我已经看到 matplotlib 和 ghost 导致了这个。关闭它的唯一方法似乎是关闭 python 终端。
这个实例到底是什么?如何在我的脚本执行后自动关闭它?
在 OS X 上,每当您执行与 GUI 交互的操作时,Dock 都会显示一个 Python 图标。最常见的原因是使用matplotlib
GUI 后端(例如 PyQt)。使用交互式后端(例如 PyQt)时,您通常会在调用后看到一个火箭图标,plt.show()
该图标将保留在 Dock 上,直到窗口关闭并且与 GUI 交互的进程退出后。
当您在 Python shell 中以交互方式工作时,图标停留在那里不是因为终端仍然打开(或脚本仍在执行),而是因为 Python 进程仍然处于活动状态。这个过程可能是在后台维护一个 GUI 事件循环。
有几个解决方案:
matplotlib
你可以使用它来分离事件循环,这plt.show(block=False)
意味着一旦窗口关闭,图标就会消失。matplotlib.use("Agg")
完全避免创建窗口。当然,你什么也看不到。.plist
以抑制图标。对于后者,这里的说明(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
然后在final之前添加以下内容</dict>
<key>LSUIElement</key>
<true/>
返回二进制并修复权限:
sudo chmod 644 Info.plist
sudo plutil -convert binary1 Info.plist
PyCharm 不会认为脚本是完整的,直到它产生的任何弹出窗口都关闭。当您运行 matplotlib 并弹出一个绘图时,这一点很明显。如果 PyCharm 在脚本完成后关闭窗口,则窗口会在您查看图表之前立即关闭。
有两种方法可以完成脚本。关闭弹出窗口,或单击 PyCharm 中的停止按钮。