Immer wenn ich einen "Unsinn" -Befehl eingebe, wird diese Python-Fehlermeldung generiert. Normale Befehle funktionieren einwandfrei. Irgendeine Idee, wie man das debuggt?
$ somenonexistingcommand
Traceback (most recent call last):
File "/usr/local/lib/python2.7/site.py", line 553, in <module>
main()
File "/usr/local/lib/python2.7/site.py", line 535, in main
known_paths = addusersitepackages(known_paths)
File "/usr/local/lib/python2.7/site.py", line 268, in addusersitepackages
user_site = getusersitepackages()
File "/usr/local/lib/python2.7/site.py", line 243, in getusersitepackages
user_base = getuserbase() # this will also set USER_BASE
File "/usr/local/lib/python2.7/site.py", line 233, in getuserbase
USER_BASE = get_config_var('userbase')
File "/usr/local/lib/python2.7/sysconfig.py", line 535, in get_config_var
return get_config_vars().get(name)
File "/usr/local/lib/python2.7/sysconfig.py", line 434, in get_config_vars
_init_posix(_CONFIG_VARS)
File "/usr/local/lib/python2.7/sysconfig.py", line 298, in _init_posix
raise IOError(msg)
IOError: invalid Python installation: unable to open /usr/include/python2.7/pyconfig.h (No such file or directory)
$ echo this works fine, however
this works fine, however
$
BEARBEITEN - Nachdem ich mein / usr / bin / python repariert habe, erhalte ich jetzt diese andere Python-Fehlermeldung:
$ yetanothernonexistingcommand
Traceback (most recent call last):
File "/usr/lib/command-not-found", line 10, in <module>
import CommandNotFound
ImportError: No module named CommandNotFound
Irgendwie wird Python ausgeführt, wenn ich einen Befehl falsch eingebe.
Antworten:
Ok, das macht die Sache etwas klarer.
command-not-found
ist ein Python-Programm, das ausgeführt wird, wenn Ihr Befehl auf dem System nicht gefunden wird. (Ihre Funktion ist es, Alternativen und Korrekturen im Falle von Tippfehlern usw. vorzuschlagen.) Siehe/usr/bin/command-not-found
. Es versucht, dasCommandNotFound
Modul zu importieren und kann dies nicht. Dies weist eindeutig auf eine fehlerhafte Python-Installation hin. Ich bin nicht so vertraut mitcommand-not-found
, aber ich denke, dass das Problem durch das Reparieren Ihrer Python-Installation behoben werden kann.Um es ein wenig zu erläutern: Wahrscheinlich befindet sich das
command-not-found
Modul an einem Ort, an dem Ihr Standard-Python nicht danach sucht. Im Grunde genommen ein Pfadproblem.Debug-Vorschläge:
1) Zu Beginn, wovon wird ausgegeben?
und zu welchem Paket / zu welcher Installation gehört diese Datei?
2) Was ist die Ausgabe für Ihre Installation, die dem folgenden Code entspricht? Der Pfad hier ist der Importpfad dieses Pythons.
quelle
# apt-get remove command-not-found
...command-not-found
scheinen kaputt zu sein (obwohl es schwer zu sagen ist, ob "Fehler" das erwartete Ergebnis bei der Suche nach "Befehl nicht gefunden" ist ...)Ich bin darauf gestoßen, als ich von der Version 2.6, die mit meiner Ubuntu-Installation geliefert wurde, auf 3.2 Python umgestiegen bin und die Standardalternative auf 3.2 anstatt 2.6 gesetzt habe.
Wenn Sie sich Ihre
/etc/bash.bashrc
Datei ansehen, gibt es eine Zeile, in der Sie aufgefordert werden, dieses Python-Skript auszuführen, um nach Alternativen in den Repos zu suchen. Es gibt ein Paket dafür, aber Sie können das Paket nach dem Upgrade nicht mehr entfernen. Ich ziehe einfach die/usr/share/command-not-found
und/usr/lib/command_not_found_handler
und meinen Begriff neu gestartet und es funktioniert wie good ol‘bash:command not found
.quelle
command_not_found
Handler deaktivieren möchten , sollten Sie sich nicht damit anlegen/usr
(dies kann dazu führen, dass nachfolgende Upgrades fehlschlagen oder durch nachfolgende Upgrades rückgängig gemacht werden). Ändern Sie stattdessen/etc/bash.bashrc
. Oder deaktivieren Sie dies in Ihrem eigenen~/.bashrc
mitunset -f command_not_found_handle
./etc/bash.bashrc
wird vombash
Paket bereitgestellt, sodass Sie Aktualisierungen für dieses Paket unterbrechen können.Ich hatte den gleichen Fehler nach der Installation von Python 3.5.0 auf meinem Ubuntu 14.04 LTS (das einen Systempython der Version 3.4.0 hat).
Nachdem ich das geöffnet hatte
/usr/lib/command-not-found
, wurde mir klar, dass dieser Fehler darauf zurückzuführen ist, dass das System dieses Skript mit dem neu installierten Python3.5.0 ausführt, da die Installation von Python3.5.0 das System dazu veranlasst, es beim Eingeben zu verwendenpython3
.Dieser Fehler kann leicht korrigiert werden, indem die erste Zeile von geändert wird
zu
quelle
Das Problem liegt bei Ihrer
$PATH
Umgebungsvariablen. Sie haben es höchstwahrscheinlich vermasselt. Es sollte ungefähr so aussehen:Siehe diesen Linux Mint-Thread: http://forums.linuxmint.com/viewtopic.php?f=18&t=119561 .
Sie können Ihre
$PATH
in der Shell mit diesem Befehl reparieren :Das ist vorübergehend! Wenn das Problem bei einem Neustart weiterhin besteht, haben Sie höchstwahrscheinlich die
$PATH
Setup-Dateien in einer Ihrer Umgebungen unter abgespritzt/etc
.quelle
Das Paket "command-not-found" ist ein Linux-Dienstprogramm. Es reagiert auf unbekannte Befehle an der Eingabeaufforderung der Befehls-Shell, nicht nur innerhalb von Python-Sitzungen. (Ich sehe, dass es auch ein Python-Paket mit diesem Namen gibt.)
Es hat Python unter seinen Abhängigkeiten, dh es verwendet Python, wenn es ausgelöst wird; Dies erklärt, warum Python aufgerufen wird, wenn Sie einen Befehl eingeben, den die Shell in Ihrem PATH nicht findet.
Ich sehe, dass es ein 'apt'-Paket gibt, um einen Befehl zu installieren, der unter Linux nicht gefunden wird. für Debian Linux ist dies katalogisiert unter:
https://packages.debian.org/sid/admin/command-not-found
quelle
Das Auskommentieren aller für
command-not-found
in verantwortlichen Zeilen/etc/bash.bashrc
löste das Problem, das durch das Wechseln der Python-Versionen entstand.quelle