Chaque fois que je tape une commande "non-sens", ce message d'erreur python est généré. Les commandes normales fonctionnent bien. Une idée de comment déboguer cela?
$ 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
$
EDIT - après avoir corrigé mon / usr / bin / python, je reçois maintenant ce message d'erreur différent de python:
$ yetanothernonexistingcommand
Traceback (most recent call last):
File "/usr/lib/command-not-found", line 10, in <module>
import CommandNotFound
ImportError: No module named CommandNotFound
D'une manière ou d'une autre, python est exécuté chaque fois que je tape une commande.
Réponses:
Ok, ça rend les choses un peu plus claires.
command-not-found
est un programme python, qui s'exécute lorsque votre commande ne se trouve pas sur le système. (Sa fonction est de suggérer des alternatives et des corrections en cas de faute de frappe, etc.) Voir/usr/bin/command-not-found
. Il essaie d'importer leCommandNotFound
module et n'y parvient pas, pointant clairement vers une installation de python foirée. Je ne suis pas familier aveccommand-not-found
, mais je pense que la correction de votre installation Python fera disparaître le problème.Juste pour développer un peu, ce qui se passe probablement, c'est que le
command-not-found
module est situé quelque part où votre python par défaut ne le recherche pas. Un problème de chemin, fondamentalement.Suggestions de débogage:
1) Pour commencer, quelle est la sortie de
et à quel package / installation ce fichier appartient-il?
2) Quelle est la sortie de votre installation correspondant au code ci-dessous? Le chemin ici est le chemin d'importation de ce python.
la source
# apt-get remove command-not-found
...command-not-found
semblent rompus (bien qu'il soit difficile de dire si "erreur" est le résultat attendu lors de la recherche de "commande introuvable" ...)Je suis tombé sur cela lorsque j'ai mis à niveau le stock 2.6 fourni avec mon installation ubuntu vers le python 3.2, en définissant l'alternative par défaut à 3.2 plutôt qu'à 2.6.
Si vous regardez votre
/etc/bash.bashrc
fichier, une ligne lui indique d'exécuter ce script python pour rechercher des alternatives dans le référentiel. Il existe un package pour cela, mais vous ne pouvez pas supprimer le package une fois que vous avez mis à niveau. Je viens tout simplement déplacé le/usr/share/command-not-found
et/usr/lib/command_not_found_handler
et remis en marche mon mandat et il fonctionne comme le bon vieux bash:command not found
.la source
command_not_found
gestionnaire, ne plaisante pas/usr
(cela peut faire échouer les mises à niveau suivantes ou être annulées par les mises à niveau suivantes). Au lieu de cela, changez/etc/bash.bashrc
. Ou désactivez-le vous-même~/.bashrc
avecunset -f command_not_found_handle
./etc/bash.bashrc
est fourni par lebash
package, vous pouvez donc interrompre les mises à jour de ce package.J'ai eu cette même erreur après avoir installé Python 3.5.0 sur mon Ubuntu 14.04 LTS (qui a un système python de la version 3.4.0).
Après avoir ouvert le
/usr/lib/command-not-found
, j'ai réalisé que cette erreur était due au fait que le système exécutait ce script en utilisant le python3.5.0 nouvellement installé, car l'installation de Python3.5.0 crée conduit le système à l'utiliser lorsque vous tapezpython3
.Cette erreur peut être facilement corrigée en changeant la première ligne de
à
la source
Le problème vient de votre
$PATH
variable d'environnement. Vous avez probablement tout gâché. Cela devrait être similaire à ceci:Voir ce fil Linux Mint: http://forums.linuxmint.com/viewtopic.php?f=18&t=119561 .
Vous pouvez réparer votre
$PATH
dans le shell avec cette commande:C'est temporaire! Si le problème persiste avec un redémarrage, vous avez probablement arrosé le
$PATH
dans l'un de vos fichiers de configuration d'environnement sous/etc
.la source
Le package "command-not-found" est un utilitaire Linux; il répond aux commandes inconnues à l'invite du shell de commande, pas seulement dans les sessions python. (Je vois qu'il y a aussi un paquet python de ce nom.)
Il a python parmi ses dépendances, c'est-à-dire qu'il utilise python lorsqu'il est déclenché; ce qui explique pourquoi python est invoqué chaque fois que vous tapez une commande que le shell ne trouve pas sur votre PATH.
Je vois qu'il y a un paquet «apt» pour installer une commande introuvable sous Linux; pour Debian linux, ceci est catalogué à:
https://packages.debian.org/sid/admin/command-not-found
la source
Commentant toutes les lignes responsables de
command-not-found
dans/etc/bash.bashrc
résolu le problème, qui a été créé en changeant les versions Python.la source