Emacs und Python-Mode

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
cm100
User
Beiträge: 6
Registriert: Freitag 12. März 2004, 22:11

Hallo,

nachdem ich ein Übungsbeispiel in den Emacs im Phyton-Mode eingegeben habe, erhalte ich nach dem ausführen des Scripts folgende Fehlermeldung:

Code: Alles auswählen

Geben Sie eine ganze Zahl ein: Traceback (most recent call last):
File <"stdin>", line 6, in ?
EOFError: EOF when reading a line
Hier das Script:

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: utf-8 -*-
#Zahlenraten

zahl = 22
geraten = int(raw_input('Geben Sie eine ganze Zahl ein: '))

if geraten == zahl:
    print 'Glückwunsch, Sie haben die richtige Zahl geraten.' #hier fängt ein neuer Block an
    print "(Aber Sie gewinnen leider keinen Preis!)" #hier hört der neue Block auf
elif geraten < zahl:
    print 'Nein, die Zahl ist etwas höher' # noch ein Block
    # Sie können in dem Block tun was Sie wollen!
else:
    print 'Nein, die Zahl ist niedriger.'
    # hierhin gelangt man, wenn geraten < zahl ist

print 'Fertig.'
#Diese letzte Anweisung wird immer am Ende nach der if-Anweisung ausgeführt.
Rufe ich das Script im Terminal vom Python Interpreter auf, verlangt es eine Zahl und läuft weiter ohne Fehler durch. Kann Emacs keine Eingabe verarbeiten?

Achja, leider kann ich den kopierten Puffer im Emacs nicht in andere Programme übernehmen, bzw. den Text hier einfügen (Copy and Paste), weiß jemand wo ich das Einstellen muß?

Gruß Carsten

ps: Melde mich nun nach zweijähriger Abwesenheit zurück, bin aber immer noch bei HelloWorld ;-)
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Mmh, Keboo hatte das Problem auch auf WinXP (http://www.python-forum.de/topic-6325.html). Bei mir (Linux) funktioniert es. Hab auch gerade erfolgreich dein Programm getestet.

Code: Alles auswählen

>>> ## working on region in file /usr/tmp/python-7219VtK.py...
Geben Sie eine ganze Zahl ein: 123
Nein, die Zahl ist niedriger.
Fertig.
>>> 
Bzgl. Copy and Paste: Hat bei mir unter *nix auch immer auf Anhieb geklappt. Wenn du auch Windows benutzt, wende dich mal an die Emacs-Leute oder suche nach Emacs-unter-Windows-Besonderheiten. Vielleicht findet sich ja hier was: http://www.gnu.org/software/emacs/windows/

Edit: Naechstes mal Suchfunktion benutzen... :wink:
cm100
User
Beiträge: 6
Registriert: Freitag 12. März 2004, 22:11

Hallo Rebecca,
Bei mir (Linux) funktioniert es
Auch mit Emacs, oder im Terminal?


ok, Suchfunktion benutzt und folgendes gefunden:

Im Beitrag wird folgendes geraten:

Code: Alles auswählen


import sys

try:
	s = raw_input('Geben Sie etwas ein --> ')
except EOFError:
	print '\nWarum haben Sie die Eingabe abgebrochen?'
	sys.exit() # beendet das Programm
except:
	print '\nIrgendein Fehler hat eine Ausnahme ausgeloest.'
	# an dieser Stelle beenden wir das Programm nicht

print 'Fertig' 
Habe versucht das einzubauen, bekomme es aber nicht hin.
Scheint es ein generelles Problem mit Emacs zu sein?
Wenn ja, sollte ich vielleicht doch einen anderen Editor nehmen.

Gruß Carsten

--
Debian Etch/GNU Emacs 21.4.1
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Hast du den Post, den ich oben verlinkt habe, gelesen? (http://www.python-forum.de/topic-6325.html)

Wie gesagt, bei mir gibt's mit Emacs keinerlei Probleme, weder beim Ausfuehren von Python-Programmen, auch deines laeuft bei mir. Darf man deinem Postskriptum im letzten Post entnehmen, dass du Emacs unter Linux benutzt? Vielleicht ist's dann kein Problem mit Windows, sondern mit den neueren Emacs-Versionen? Oder irgendwelche Einstellungen in der .emacs? (Versuch mal emacs -q) Wie genau fuehrst du dein Programm aus?

Aber wie gesagt, bei den Emacs-Leuten kann man dir sicher besser helfen.

Wenn dein Emacs bei jedem raw_input ein EOF sendet, nuetzt dir auch eine Fehlerbehandlung im Programm nicht viel.

Uebrigens geht's doch genauso schnell, wenn man neben dem Emacs immer noch ne Shell offen hat und da sein Programm drin ausfuehrt :wink: (Bei mir Alt+Tab, Pfeil hoch, Enter im Gegensatz zu Emacs' Ctrl+c, Ctrl+c. Und wieder zurueck zu zum Quelltext mit Alt+Tab statt Emacs' Ctrl+x, o)
cm100
User
Beiträge: 6
Registriert: Freitag 12. März 2004, 22:11

Rebecca hat geschrieben:Hast du den Post, den ich oben verlinkt habe, gelesen?
Ja, hatte ich. Zugegeben zu flüchtig, weil ich annahm, das weil Johannes mit Win arbeitet, es nicht vergleichbar sein würde.

Nun, wenn ich es wie dort beschrieben mache, im zweiten Buffer den Python-Interpreter starte, klappt es endlich auch bei mir.
Rebecca hat geschrieben:Python-Programmen, auch deines laeuft bei mir.]
Es ist nicht meine selber geschriebenes, nur von abgeschrieben.

Rebecca hat geschrieben:Emacs unter Linux benutzt
Ja.
Rebecca hat geschrieben:Oder irgendwelche Einstellungen in der .emacs? (Versuch mal emacs -q) Wie genau fuehrst du dein Programm aus?
Wenn ich mit emacs -q starte, kann ich keinen Python-Mode mehr aktivieren. Emacs habe ich als Startknopf dem Panel hinzugefügt. Es wird mit "/usr/bin/emacs21 -i" gestartet. Manchmal starte ich auch vom Terminal, nur mit "emacs".

Der .emacs habe ich folgendes hinzugefügt:

Code: Alles auswählen

;====================================
;kein Startbildschrim
(setq inhibit-startup-message t)

;Text Mode als default mode für neue Buffer
(setq default-major-mode 'text-mode)

;Autofill-Modus im Text-Modus. Zeile wird automatisch nach 72 Zeichen umbrochen.
(setq text-mode-hook 'turn-on-auto-fill)  
(setq fill-column 72)

;alle Unterverzeichnisse "Emacs" zum Load Path hinzufügen
(progn (cd "~/Emacs") (normal-top-level-add-subdirs-to-load-path))
(progn (cd "~/MeineProgramme") (normal-top-level-add-subdirs-to-load-path))

;Python Modus aktivieren, zuerst M-x byte-compile-file RET [file to byte-compile
(setq auto-mode-alist (cons '("\\.py$" . python-mode) auto-mode-alist))
(setq interpreter-mode-alist (cons '("python" . python-mode)
                                       interpreter-mode-alist))
(autoload 'python-mode "python-mode" "Python editing mode." t)
Rebecca hat geschrieben: bei den Emacs-Leuten kann man dir sicher besser helfen.
Habe bisher nur ein Emacs Forum gefunden, dort aber noch nicht nachgefragt. Meinst Du dieses?
Rebecca hat geschrieben: Wenn dein Emacs bei jedem raw_input ein EOF sendet


Scheint leider der Fall zu sein.
Rebecca hat geschrieben: Shell offen hat und da sein Programm drin ausfuehrt :wink: (Bei mir Alt+Tab, Pfeil hoch, Enter


Gut, so kann ich auch arbeiten. Danke schön. :-)

Gruß
Carsten
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

cm100 hat geschrieben:Habe bisher nur ein Emacs Forum gefunden, dort aber noch nicht nachgefragt. Meinst Du dieses?

Ja, genau, da sind die Emacs-Entwickler anzutreffen.

emacs -q startet Emacs ohne jegliche Konfigurationsdateien. Wenn Problemen auf den Grund gehen will (oder Bugs reporten), sollte man das benutzen, um sicherzugehen, dass nicht irgendwas einfach nur falsch konfiguriert wurde. Da viele Linux-Distributionen naemlich ihre eigenen .emacs-Dateien laden lassen (noch bevor die vom User geladen wird), kann alles Moegliche passieren. Suse macht das zum Beispiel ziemlich exzessiv.

Wenn du dann den Python-Mode nicht aktivieren kannst, musst du die ensprechende Lisp-Datei per Hand laden: M-x load-file /bla/blupp/bla.py.

Mmh, ich sehe gerade, dass der Emacs-Mode von den Python-Leuten maintaint wird:
python-mode.el hat geschrieben:;; Author: 1995-2002 Barry A. Warsaw
;; 1992-1994 Tim Peters
;; Maintainer: python-mode@python.org
;; Created: Feb 1992
;; Keywords: python languages oop

(defconst py-version "$Revision: 4.41 $"
"`python-mode' version number.")
Also Bug-Reports wohl besser dahin. Waere noch interessant, welche Python-Mode-Verion du hast.
cm100
User
Beiträge: 6
Registriert: Freitag 12. März 2004, 22:11

Rebecca hat geschrieben:Wenn du dann den Python-Mode nicht aktivieren kannst,
Den Python Mode kann ich ohne Probleme aktivieren.
nur halt den Interpreter nicht ohne "Umwege"
aufrufen.
Rebecca hat geschrieben:Waere noch interessant, welche Python-Mode-Verion du hast.
python 2.3.5-11 (lt. aptitude)

Gruß+Danke Carsten
Antworten