@lunar: bpython führt beim Starten (wie die Vanilla-Python-REPL auch) die Datei aus, auf die die Umgebungsvariable ``PYTHONSTARTUP`` verweist.
@Rebecca: Nunja, es gibt kein systemweites Theme-Verzeichnis. Allerdings sollten die Beispielthemes schon installiert werden, was bei den Debian.Paketen bis jetzt nicht der Fall zu sein scheint. Vielleicht ist das aber mit dem neuen Paket für 0.9.5.1 behoben (sollte bald in den Repos landen, wurde heute vom Package-Maintainer erstellt).
bpython - a fancy interface to the Python interpreter
Danke, das wusste ich nicht.Trundle hat geschrieben:@lunar: bpython führt beim Starten (wie die Vanilla-Python-REPL auch) die Datei aus, auf die die Umgebungsvariable ``PYTHONSTARTUP`` verweist.
Edit: Allerdings funktioniert das nicht für "__future__"-Imports. Ein "from __future__ import print_function" in der $PYTHONSTARTUP-Datei hat keinen Einfluss auf den Interpreter.
Zuletzt geändert von lunar am Mittwoch 23. September 2009, 22:57, insgesamt 1-mal geändert.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo!Leonidas hat geschrieben:Das Standard-Theme vom GNOME-Terminal ist übrigens auch eine positivdarstellung. Ich stelle es aber trotzdem lieber auf negativ ein, warum auch immer.
Das ist jedes mal so ziemlich das Erste, was ich nach dem Installieren von Ubuntu mache. Ich stelle das Terminal auf "weiße Schrift auf Schwarzem Hintergrund" um. Umgekehrt, will und kann ich nicht mit einem Terminal arbeiten.
lg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Hatte ich früher auch immer, mittlerweile finde ich es anders herum angenehmer - insbesondere bei Laptop und schlechte Lichtverhältnissen.gerold hat geschrieben:Hallo!Leonidas hat geschrieben:Das Standard-Theme vom GNOME-Terminal ist übrigens auch eine positivdarstellung. Ich stelle es aber trotzdem lieber auf negativ ein, warum auch immer.
Das ist jedes mal so ziemlich das Erste, was ich nach dem Installieren von Ubuntu mache. Ich stelle das Terminal auf "weiße Schrift auf Schwarzem Hintergrund" um. Umgekehrt, will und kann ich nicht mit einem Terminal arbeiten.
lg
Gerold
Ist iirc seit KDE4 so.lunar hat geschrieben:@mkallas: Ist das wirklich die Standardeinstellung ist? Meine KDE 4-Konsole ist jedenfalls weiß auf schwarz, ohne das ich mich erinnern könnte, die Konfiguration verändert zu haben.
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Kann ich nicht bestaetigen, hatte das auch schon in KDE 3.5 als Standard.apollo13 hat geschrieben:Ist iirc seit KDE4 so.lunar hat geschrieben:@mkallas: Ist das wirklich die Standardeinstellung ist? Meine KDE 4-Konsole ist jedenfalls weiß auf schwarz, ohne das ich mich erinnern könnte, die Konfiguration verändert zu haben.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
-
- User
- Beiträge: 32
- Registriert: Donnerstag 26. Februar 2009, 22:41
Gibt es in bpython auch die Möglichkeit, die/den letzte/n Funktion/Codeblock zu laden und zu editieren wie in ipython?
Code: Alles auswählen
>>> import sys
>>> sys.stdout.fileno()
Traceback (most recent call last):
File "<input>", line 1, in <module>
AttributeError: 'Repl' object has no attribute 'fileno'
Was ich noch heraus gefunden habe:
Code: Alles auswählen
>>> from ctypes import cdll
>>> cdll.foo
Vergleich:
Code: Alles auswählen
Python 2.6.4 (r264:75706, Nov 2 2009, 14:38:03)
[GCC 4.4.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from ctypes import cdll
>>> cdll.foo()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.6/ctypes/__init__.py", line 423, in __getattr__
dll = self._dlltype(name)
File "/usr/lib/python2.6/ctypes/__init__.py", line 353, in __init__
self._handle = _dlopen(self._name, mode)
OSError: foo: cannot open shared object file: No such file or directory
Hat BPython eigentlich ein Pendant zu IPythons `<Name>?` bzw. `<Name>??` ?
Diese beiden Features sind mir schon sehr wichtig.
-
- User
- Beiträge: 32
- Registriert: Donnerstag 26. Februar 2009, 22:41
Ich sprach mit dem Hauptentwickler per IRC - bei ihm steht das auf der TODO. Er meint das wäre allerdings recht umfangreich einzufügen. Warten wir es ab.Trundle hat geschrieben:Nein, Codeblöcke editieren kann bpython leider (noch) nicht. Wobei ich das in ipython auch nie so überzeugend fand.
- birkenfeld
- Python-Forum Veteran
- Beiträge: 1603
- Registriert: Montag 20. März 2006, 15:29
- Wohnort: Die aufstrebende Universitätsstadt bei München
Naja, was würdest du erwarten? Ein stdout-Wrapper muss halt nun mal nicht das volle file-Interface unterstützen.snafu hat geschrieben:Ist vermutlich kein gewolltes Verhalten, oder?Code: Alles auswählen
>>> import sys >>> sys.stdout.fileno() Traceback (most recent call last): File "<input>", line 1, in <module> AttributeError: 'Repl' object has no attribute 'fileno'
@snafu: Das ist in der Tat eher weniger das beabsichtigte Resultat. Dadurch, dass es eine curses-Anwendung ist, muss `sys.stdout` eben komplett gewrappt werden und bis jetzt hat sich noch niemand beschwert, dass es `fileno()` nicht gibt.
Den Fehler mit ctypes werde ich mir bei Gelegenheit mal zu Gemüte führen. Prinzipiell empfiehlt es sich, Bugs in den Issue-Tracker einzupflegen, so dass sie nicht verloren gehen.
@vicbrother: Ich bin mir nicht sicher, ob du da Bob richtig verstanden hast. Wir sind uns natürlich dessen bewusst, dass man gerade keine Blöcke editieren kann und haben auch nichts dagegen, wenn bpython das könnte. Das heißt aber leider nicht, dass bpython das in absehbarer Zeit auch können wird.
Edit: Es steht natürlich jedem frei, das für bpython zu implementieren und einen Patch beizusteuern.
Den Fehler mit ctypes werde ich mir bei Gelegenheit mal zu Gemüte führen. Prinzipiell empfiehlt es sich, Bugs in den Issue-Tracker einzupflegen, so dass sie nicht verloren gehen.
@vicbrother: Ich bin mir nicht sicher, ob du da Bob richtig verstanden hast. Wir sind uns natürlich dessen bewusst, dass man gerade keine Blöcke editieren kann und haben auch nichts dagegen, wenn bpython das könnte. Das heißt aber leider nicht, dass bpython das in absehbarer Zeit auch können wird.
Edit: Es steht natürlich jedem frei, das für bpython zu implementieren und einen Patch beizusteuern.
"Der Dumme erwartet viel. Der Denkende sagt wenig." ("Herr Keuner" -- Bertolt Brecht)
Den Quelltext bekommt man mit F2, für den Docstring gibt es (IIRC) noch keinen Shortcut. Aber bei Aufrufen wird der ja auch zusammen mit der Signatur angezeigt.snafu hat geschrieben:Hat BPython eigentlich ein Pendant zu IPythons `<Name>?` bzw. `<Name>??` ?
"Der Dumme erwartet viel. Der Denkende sagt wenig." ("Herr Keuner" -- Bertolt Brecht)
Ich würde von einer Python-Shell erwarten, dass es mich als Benutzer nicht interessieren muss, wie `sys.stdout` zu Stande kommt, sondern dass es einfach wie gewohnt funktioniert.birkenfeld hat geschrieben:Naja, was würdest du erwarten? Ein stdout-Wrapper muss halt nun mal nicht das volle file-Interface unterstützen.snafu hat geschrieben:Ist vermutlich kein gewolltes Verhalten, oder?Code: Alles auswählen
>>> import sys >>> sys.stdout.fileno() Traceback (most recent call last): File "<input>", line 1, in <module> AttributeError: 'Repl' object has no attribute 'fileno'
So einfach ist das aber halt mal nicht. Das geht nicht zu ignorieren. Es sind einfach keine realen Dateiobjekte. Beispielsweise wird ``os.write(1, 'Yay')`` nicht auf dem Bildschirm landen. Was also sollte `fileno()` zurückgeben? Die Dokumentation von Python drückt sich hier auch klar aus. Über `sys.stdout` und `sys.stderr`: "stdout and stderr needn’t be built-in file objects: any object is acceptable as long as it has a write() method that takes a string argument" sowie über `file.fileno()`: "Note: File-like objects which do not have a real file descriptor should not provide this method!"
"Der Dumme erwartet viel. Der Denkende sagt wenig." ("Herr Keuner" -- Bertolt Brecht)
@snafu:
Gehts Dir darum, auf die Terminaleigenschaften zu zugreifen oder wofür brauchst Du fileno()? Problem dabei ist, das 0,1,2 als stdin,stdout und stderr festlegt sind (Posixstandard, wenn mich nicht alles täuscht) und da aber schon bpython dranklebt. Evtl. ginge es, die Ein-/Ausgabe über ein Pseudoterminal vorzunehmen (also nicht 0,1,2), um an die Eigenschaften zu kommen, dazu müsste aber alles von bpython umgeleitet werden (kA, wie das jetzt gelöst ist). Ob es den Aufwand wert ist, ist eine ganz andere Frage, zumindest löst keine der grossen IDEs das zufriedenstellend, so dass man hier definitiv nicht von "gewohnt" reden kann.
Gehts Dir darum, auf die Terminaleigenschaften zu zugreifen oder wofür brauchst Du fileno()? Problem dabei ist, das 0,1,2 als stdin,stdout und stderr festlegt sind (Posixstandard, wenn mich nicht alles täuscht) und da aber schon bpython dranklebt. Evtl. ginge es, die Ein-/Ausgabe über ein Pseudoterminal vorzunehmen (also nicht 0,1,2), um an die Eigenschaften zu kommen, dazu müsste aber alles von bpython umgeleitet werden (kA, wie das jetzt gelöst ist). Ob es den Aufwand wert ist, ist eine ganz andere Frage, zumindest löst keine der grossen IDEs das zufriedenstellend, so dass man hier definitiv nicht von "gewohnt" reden kann.
Naja, ich nutze ja die Kombination `os.ctermid()` + `os.open()`, um den Dateideskriptor zu erhalten, den ich zur Ermittlung der Zeilengröße brauche. Ich hatte in BPython nur mal die Variante mit der `fileno()`-Methode eines Ausgabekanals ausprobiert und festgestellt, dass das dort nicht funktioniert.jerch hat geschrieben:Gehts Dir darum, auf die Terminaleigenschaften zu zugreifen oder wofür brauchst Du fileno()?
Keine Ahnung, wie IPython das intern löst, aber dort scheint es ein Dateiobjekt zu sein:
Code: Alles auswählen
In [4]: sys.stdout.fileno()
Out[4]: 1
In [5]: sys.stdout
Out[5]: <open file '<stdout>', mode 'w' at 0xb78aa070>
-
- User
- Beiträge: 32
- Registriert: Donnerstag 26. Februar 2009, 22:41
@Trundle: Gibt es eine Roadmap zu bpython?