Seit dem Upgrade auf Python 3.4 werden alle interaktiven Befehle protokolliert ~/.python_history
. Ich möchte nicht, dass Python diese Datei erstellt oder in sie schreibt.
Das Erstellen eines Symlinks zu /dev/null
funktioniert nicht. Python entfernt die Datei und erstellt sie neu. In der Dokumentation wird vorgeschlagen , das zu löschen sys.__interactivehook__
, dies entfernt jedoch auch die Tab-Vervollständigung. Was sollte getan werden, um das Schreiben dieser Verlaufsdatei zu deaktivieren und gleichzeitig die Tab-Vervollständigung beizubehalten?
Zusätzliche Details:
- Distribution: Arch Linux x86_64
- readline 6.3-3
- Python 3.4.0-2
python
interactive
Lekensteyn
quelle
quelle
chattr
. Ich suche eine einzelne (Benutzer-) Konfigurationsdatei oder Umgebungsvariable.chmod
ist die Lösung von Python-Entwicklern in diesem Fehlerbericht von vor einigen Wochen vorgeschlagen, obwohl es auch einige Erwähnungen~/.inputrc
gibt (es gibt keineman readline
, BTW, außer der Bibliotheksfunktion).inputrc
undchmod
funktioniert auch nicht für mich. Die Datei wird trotzdem geändert (Arch Linux). Es gibt eineinfo inputrc
Seite, aber ich bin im Allgemeinen nicht so zufrieden mit dem Lesen von Infoseiten, da sie schwer zu navigieren sind.Antworten:
Ab Python 3.6 können Sie readline.set_auto_history verwenden , um dies zu deaktivieren:
quelle
Das funktioniert bei mir.
Erstellen von
~/.pythonrc
Datei:Dann exportieren Sie es:
quelle
set_history_length
denn, etwas Magisches? Das Ausfüllen der Registerkarten erfolgt für Funktionen, nicht für den Verlauf.~/.python_history
, dass geschrieben (verifiziert mitPYTHONSTARTUP=$HOME/.pythonrc strace -e file,write -o /tmp/st python
). Ich fange an zu denken, dass es keine Möglichkeit gibt, dies zu deaktivieren, aber die Tab-Vervollständigung beizubehalten, ohne den Code von zu duplizieren/usr/lib/python3.4/site.py
.Eine andere ~ / .pythonrc-Lösung:
quelle
Deaktivieren Sie den Hook , der diese Funktionalität aktiviert
~/.python_history
, um zu verhindern, dass Python schreibt :Wenn Sie die Tab-Vervollständigung aktivieren und die Verlaufsfunktion deaktivieren möchten, können Sie den
site.enablerlcompleter
Code anpassen . Schreiben Sie den folgenden Code in Ihre Shell~/.pythonrc
und legenexport PYTHONSTARTUP=~/.pythonrc
Sie ihn fest, um ihn zu aktivieren.quelle
Bis es in Python selbst auf irgendeine Weise behoben ist, können Sie dies auf UNIX-Systemen tun:
Danach wirst du bekommen
Jedes Mal, wenn Sie eine Python-Shell beenden. Der Exit-Status bleibt bestehen
0
.Beachten Sie, dass Sie eine andere Datei erstellen und unveränderlich machen müssen, wenn Sie sie als Datei belassen.
~/.python_history
quelle
Fügen Sie Folgendes in eine Datei ein und stellen Sie
PYTHONSTARTUP
es ein (oder rufen Sie die Datei aufsitecustomize.py
und machen Sie sie über die Datei zugänglichPYTHONPATH
).Auf diese Weise haben Sie weiterhin Zugriff auf die Tab-Vervollständigung und den vorherigen Verlauf, aber die von Ihnen eingegebenen Befehle werden nicht zur Verlaufsdatei hinzugefügt.
quelle
PYTHONSTARTUP
Skript tatsächlich ausgeführt wird.Hier ist meine Methode (die sich im Grunde als zuverlässigere und pythonischere Version von Berdarios Methode herausstellte). Es deaktiviert nur das Schreiben
.python_history
, aber nicht das Lesen, wenn es vorhanden ist, oder das Anhängen neuer Zeilen an den Verlauf der aktuellen Instanz. Ich empfehle, es als zu speichernsite-packages/sitecustomize.py
, dasite
es sich um das Modul handelt, in das sowohl geschrieben.python_history
als auch importiert wird,sitecustomize
wenn es vorhanden ist , obwohl es auchPYTHONSTARTUP
funktioniert , wenn Sie es anders benennen und mit darauf zeigen .Update: Was ich für 3.7 getan habe, spezifisch für mein System, nicht pep8:
quelle
Meine aktuelle Lösung (für ausreichend aktuelle Versionen von Python 3) verhindert die Standardverwendung von ~ / .python_history, lässt jedoch die Möglichkeit, den Verlauf explizit in eine bestimmte Datei zu schreiben (mithilfe von readline.write_history_file (Dateiname) oder readline.append_history_file (... )) muss Folgendes in der PYTHONSTARTUP-Datei enthalten sein:
Es hat den angenehmen (für mich) Nebeneffekt, dass jede explizit geschriebene Geschichte mit der Startzeit des Dolmetschers gekennzeichnet wird. Es funktioniert aufgrund des Fixes für Fehler 5845, der hier zu sehen ist .
quelle