Ich versuche herauszufinden, wie ich eine Python-Datei über das Ubuntu-Windows-System auswählen und ausführen kann. Ich habe noch nie in meinem Leben Skripte ausgeführt und bin ein Neuling darin. Also bin ich auf YouTube gegangen, weil ich dachte, das sollte nicht schwer sein, aber ...
Verwenden Sie das hier beschriebene Skript (und die Anweisungen): Erstellen, Speichern und Ausführen eines Python-Programms über das Ubuntu-Terminal
print"hello world"
vary = raw_input("Enter your Name")
print ("hey" + vary)
Ich habe versucht, die Datei durch Doppelklicken zu öffnen (immer wieder) ... und es ist fehlgeschlagen, hat mich nicht nach Eingaben gefragt, hat einfach das Terminal geöffnet und ist verschwunden (die Shell geschlossen) und das war's ... aber IDLE konnte es einwandfrei ausführen, also weiß ich, dass es nicht am Skript liegt. Als ich VIM verwendet habe, um es als Datei zu erstellen und es von dort aus auszuführen, habe ich diese Ausgabe erhalten:
Traceback (most recent call last):
File "shiite/livescript/rev.py", line 2, in <module>
vary = input("Enter your Name Bitch: ")
File "<string>", line 1, in <module>
NameError: name 'Dave' is not defined
Und noch etwas: Ich habe auch versucht, mit der rechten Maustaste die Eigenschaften der Datei auszuwählen und das Kontrollkästchen zu aktivieren, das die Ausführung ermöglicht … immer noch nichts …
Weiß jemand, warum das Ubuntu-Terminal keine Python-Programme ausführt??? Vielleicht gibt es ein Terminal, auf dem so etwas ausgeführt werden kann???
Antwort1
Unter Windows werden die Dateitypen durch die letzten drei Zeichen nach dem . identifiziert. Unter Linux (und Ubuntu) hilft uns .py jedoch nur dabei, herauszufinden, um welche Art von Datei es sich handelt. Sie müssen Ubuntu mitteilen, dass das von Ihnen geschriebene Skript ein Python-Skript ist und mit einem Python-Interpreter ausgeführt werden soll. Sie können dies auf zwei Arten tun:
ErsteSie können aufrufen, python
gefolgt vom Namen des Skripts. Öffnen Sie dazu ein Terminal und geben Sie ein:
python hellowworld.py
Das wird funktionieren.
Zweite,Sie möchten jedoch die GUI verwenden und es per Doppelklick ausführen. Dazu benötigen Sie eine Zeile im Skript, die Ubuntu mitteilt, dass die nächsten Zeilen als Python-Skript interpretiert werden sollen. Diese erste Zeile heißtshabangZeile. Für Python sieht es so aus:
#! /usr/bin/python
Beachten Sie das #!
am Anfang. Die ersten beiden Zeichen Ihres Skripts müssen diese beiden sein, gefolgt vom Rest der Zeile. Ihr Skript sieht also folgendermaßen aus:
#! /usr/bin/python
print"hello world"
vary = raw_input("Enter your Name")
print ("hey " + vary)
Wie Sie bemerkt haben, muss das Skript als ausführbar markiert werden. Klicken Sie dazu mit der rechten Maustaste auf das Symbol des Skripts und gehen Sie zuEigenschaften>Berechtigungenund prüfeAusführen der Datei als Programm zulassen.
Wenn Sie jetzt auf das Skript doppelklicken, wird Ihnen ein Fenster mit den folgenden Auswahlmöglichkeiten angezeigt:
Run in terminal
, Display
, Cancel
,Run
Sie können es versuchen Run in terminal
. Es öffnet sich ein Terminal und zeigt Ihnen die Eingabeaufforderung:
Enter your name
Wenn Sie Ihren Namen eingeben, wird das Terminal geschlossen, sobald das Skript abgeschlossen ist. Sie werden also nie „hey [Ihr Name]“ sehen, da dies zu schnell geschieht, als dass Sie es mit bloßem Auge wahrnehmen könnten. Sie müssen das Skript so ändern, dass es pausiert und wartet, bis Sie es schließen, nachdem Sie die Anzeige gesehen haben.
Hoffe das hilft
Antwort2
Um Ihr Problem nachzubilden, habe ich zunächst überprüft, ob Python auf meinem System installiert ist.
xaap001@ubuntu:~$ which python
/usr/bin/python
xaap001@ubuntu:~$ python
Python 2.7.3 (default, Aug 1 2012, 05:14:39)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()
Ich habe dann den Python-Code „Hallo Welt“, den Sie oben gepostet haben, genommen und in einer Datei namens gespeichert helloWorld.py
. Ich habe die Berechtigungen für diese Datei nach dem Speichern nicht geändert. Vom Terminal aus habe ich Folgendes versucht:
xaap001@ubuntu:~$ python helloWorld.py
hello world
Enter your NameAaron
heyAaron
Sieht aus, als hätte es funktioniert. Vom Terminal aus müssen Sie allen Python-Skripten nur eins voranstellen python
.
Bearbeiten: Ich habe beschlossen, zu versuchen, dies vom Desktop aus zum Laufen zu bringen, indem ich eine Desktopverknüpfung erstellt habe, wie in dieser Frage/Antwort beschrieben:Desktopverknüpfung zum Erstellen einer neuen Desktopverknüpfung bewirkt nichts
Ich habe den „Befehl“ wie folgt gesetzt:python /home/xaap001/helloWorld.py
Dadurch bekam ich ein Desktopsymbol, auf das ich klicken konnte. Und es passierte nichts. Ich überprüfte den tatsächlichen Inhalt der .desktop-Datei (Verknüpfung):
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon[en_US]=python
Name[en_US]=Python helloWorld
Exec=python /home/xaap001/helloWorld.py
Name=helloWorldPy
Icon=python
Mir ist die Terminal=false
Einstellung aufgefallen und ich habe sie in geändert Terminal=true
. Dann hat ein Doppelklick auf das Symbol funktioniert.
Antwort3
kannst du das glauben? Ich muss zugeben, ich glaube, mein Ubuntu hat einen Virus oder so etwas.. aber ja, ich habe das und das hier gemacht:
lucky1@babyCatsDesktop:~/shiite/livescript$ python rev.py
Hallo Welt
Geben Sie bitte Ihren Namen ein: Dave
Traceback (letzter Anruf zuletzt):
Datei "rev.py", Zeile 2, in
vary = input("Enter your Name Please: ")
Datei "", Zeile 1, in
NameError: Name „Dave“ ist nicht definiert
lucky1@babyCatsDesktop:~/shiite/livescript$
Und trotzdem funktioniert es auf dem Python-Terminal einwandfrei? Ich bin nicht gut in diesen Dingen und scheine immer wieder auf die einzigartigsten und doch häufigsten Probleme zu stoßen, die es gibt.
Antwort4
In Python 2 (das Sie wahrscheinlich verwenden) sind input()
und raw_input()
nicht dasselbe. Ihr Skript verwendet input()
im Gegensatz zum Beispiel .
input()
nimmt Ihre Eingabe und versucht, sie auszuwerten. Da es in Ihrem Namespace kein Objekt mit dem Namen „Dave“ gibt, weiß Python nicht, was es tun soll. raw_input()
konvertiert Ihre Eingabe jedoch in eine Zeichenfolge. Dies sollte in fast allen Fällen verwendet werden.
Notiz: In Python 3 raw_input()
wurde es umbenannt in input()
.
Sie denken, es passiert nichts, weil ein Fehler auftritt und das Skript beendet wird. Dies ist auch der Grund, warum Sie Skripte immer vom Terminal aus ausführen sollten, damit Sie Fehlermeldungen oder allgemeine Debuginformationen sehen können, die gedruckt werden.
Ändern Sie also Ihr zu verwendendes Skript raw_input()
und führen Sie es vom Terminal aus, bis Sie alle Fehler behoben haben. Versuchen Sie dann, darauf zu doppelklicken.