2016-04-27 11 views
0

wenn ich Python-Skripte in Terminal ein Python-Instanz laufen eröffnetWas ist das Python Icon? Manchmal

enter image description here

Ich habe matplotlib gesehen und Geist diese verursachen. Die einzige Möglichkeit, es zu schließen, scheint zu sein, das Python-Terminal zu schließen.

Was genau ist diese Instanz und wie schließe ich sie automatisch, nachdem mein Skript ausgeführt wurde?

+1

Es ist, wenn Sie ein Python-Skript in eine Binärdatei für Mac kompilieren, und Sie kein Symbol angeben. Ich habe es schon oft gesehen. Ich würde das als Antwort posten, aber ich habe keine Details mehr. – DJMcMayhem

Antwort

0

PyCharm betrachtet das Skript nicht als vollständig, bis alle geöffneten Popups geschlossen werden. Dies ist offensichtlich, wenn Sie matplotlib ausführen und ein Plot erscheint. Wenn PyCharm das Fenster nach Abschluss des Skripts geschlossen hat, wird das Fenster sofort geschlossen, bevor Sie Ihr Diagramm anzeigen können.

Es gibt zwei Möglichkeiten, das Skript zu beenden. Schließen Sie die Popups oder klicken Sie in PyCharm auf die Schaltfläche zum Beenden.

3

Auf OS X zeigt das Dock ein Symbol für Python an, wenn Sie etwas tun, das mit der GUI interagiert. Der häufigste Grund hierfür ist die Verwendung von matplotlib mit einem GUI-Backend (z. B. PyQt). Wenn Sie ein interaktives Backend (z. B. PyQt) verwenden, sehen Sie normalerweise nach dem Aufruf plt.show() ein Raketensymbol, das im Dock verbleibt, bis das Fenster geschlossen ist und der Prozess mit der GUI beendet wird.

Wenn Sie interaktiv in der Python-Shell arbeiten, bleibt das Symbol dort nicht, weil das Terminal noch offen ist (oder Skript wird noch ausgeführt), sondern weil der Python-Prozess noch aktiv ist. Dieser Prozess führt wahrscheinlich eine GUI-Ereignisschleife im Hintergrund.

Es gibt ein paar Lösungen:

  • In matplotlib können Sie plt.show(block=False) verwenden, um die Ereignisschleife zu lösen, das Symbol bedeutet, verschwindet, sobald das Fenster geschlossen ist.
  • Legen Sie ein nicht interaktives Back-End, z. matplotlib.use("Agg") zu vermeiden, die Fenster überhaupt zu erstellen. Natürlich kannst du nichts sehen.
  • Ändern Sie die Python.app .plist, um Symbole zu unterdrücken.

Für die letzteren sind die instructions here (Dr. Drang) wie folgt. Hinweis: Dies ist für das System Python ist, für andere Standorte müssen Sie die .plist an anderer Stelle finden:

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 

Dann folgende vor den endgültigen </dict>

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

Zurück zur binären und fix Berechtigungen hinzufügen:

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