每当我输入任何“无意义”命令时,都会生成此 python 错误消息。普通命令可以正常工作。知道如何调试这个吗?
$ 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
$
编辑- 修复我的 /usr/bin/python 后,我现在收到这个不同的 python 错误消息:
$ yetanothernonexistingcommand
Traceback (most recent call last):
File "/usr/lib/command-not-found", line 10, in <module>
import CommandNotFound
ImportError: No module named CommandNotFound
不知何故,每当我输错命令时,python就会运行。
答案1
好吧,这让事情变得更清楚了。command-not-found
是一个Python程序,当系统上找不到你的命令时它就会运行。 (其功能是在打字错误等情况下建议替代方案和更正。)请参阅/usr/bin/command-not-found
。它正在尝试导入CommandNotFound
模块但无法导入,这显然表明 python 安装失败了。我不太熟悉command-not-found
,但我认为修复你的 Python 安装将使问题消失。
详细说明一下,可能发生的情况是该command-not-found
模块位于默认 python 不寻找它的地方。基本上是路径问题。
调试建议:
首先,输出是什么
$ 类型 python
该文件属于什么包/安装?
您的安装对应于以下代码的输出是什么?这里的路径是这个python的导入路径。
$ python Python 2.6.6 (r266:84292, Dec 27 2010, 00:02:40) [GCC 4.4.5] on linux2 输入“help”、“copyright”、“credits”或“license”以获取更多信息。
import sys sys.path ['', '/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk', '/usr/lib/python2.6/lib-old', '/usr/lib/python2.6/lib-dynload', '/usr/local/lib/python2.6/dist-packages', '/usr /lib/python2.6/dist-packages', '/usr/lib/python2.6/dist-packages/PIL', '/usr/lib/python2.6/dist-packages/gst-0.10', '/ usr/lib/pymodules/python2.6'、'/usr/lib/pymodules/python2.6/gtk-2.0'、'/usr/lib/python2.6/dist-packages/wx-2.8-gtk2-unicode' ]
答案2
在我的 Ubuntu 14.04 LTS(其系统 python 版本为 3.4.0)上安装 Python 3.5.0 后,我遇到了同样的错误。
打开后/usr/lib/command-not-found
,我意识到这个错误是由于系统使用新安装的python3.5.0执行此脚本造成的,因为安装Python3.5.0会导致系统在输入时使用它python3
。
通过更改第一行可以轻松纠正此错误
#!/usr/bin/python3
到
#!/usr/bin/python3.4
答案3
当我从 ubuntu 安装附带的库存 2.6 升级到 3.2 python 时,我遇到了这个问题,并将默认替代设置为 3.2 而不是 2.6。
如果您查看/etc/bash.bashrc
文件,其中有一行告诉它运行此 python 脚本以在存储库中查找替代方案。有一个适用于它的软件包,但是升级后您将无法删除该软件包。我只是简单地移动了/usr/share/command-not-found
and/usr/lib/command_not_found_handler
并重新启动了我的术语,它就像很好的 ol' bash: 一样工作command not found
。
答案4
问题出在你的$PATH
环境变量上。你很可能把事情搞砸了。它应该类似于这样:
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
请参阅此 Linux Mint 线程:http://forums.linuxmint.com/viewtopic.php?f=18&t=119561。
$PATH
您可以使用以下命令在 shell 中修复:
$ export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
这是暂时的!如果重新启动后问题仍然存在,那么您很可能已将其放入$PATH
您的环境设置文件之一的/etc
.