每当我尝试在控制台(/ bin / bash)中调用不存在的命令(例如$ a
)时,解释器就会等待很长时间。当我中断它(^ C)时,我从Python解释器收到一条错误消息。而不是那样,我希望它告诉我该命令未被识别。为什么会这样?
$ a
^C
Traceback (most recent call last):
File "/usr/lib/python2.7/encodings/__init__.py", line 32, in <module>
root@dell:/home/antonio/workspace/biz_index# from encodings import aliases
File "/usr/lib/python2.7/encodings/aliases.py", line 17, in <module>
"""
KeyboardInterrupt
^C
答案 0 :(得分:16)
你在ubuntu机器上吗? Ubuntu有一个command-not-found package,它是用python实现的,你可能已经打断了它。
在您的路径中,可能存在一个与command-not-found
包调用的脚本同名的脚本。如果有的话,这个脚本很可能是那个挂起的人。要以可读的方式打印路径,请运行echo $PATH | tr -s ':' '\n'
。
答案 1 :(得分:7)
如果设置PATH=""
修复了它,那么某个地方正在隐藏一个被command-not-found
包调用的python包。我最近自己编写了一个名为struct.py
的脚本。您需要遍历路径中的每个目录,即
/home/antonio/.local/bin
/home/antonio/.local/bin
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games
/usr/local/games
并在那里查找.py
个文件。其中一个与内置Python包之一共享一个名称。或者,您可以从PATH
中删除目录并将其重新添加,直到找到哪个目录为止。找到后,您需要将其删除或重命名。
这是一个贝壳单行为你做的:
for dir in $(echo $PATH | tr ":" "\n"); do ls -1 $dir | grep "[.]py"; done
您可以尝试以下方法在自己的shell中测试一下(从几天前重新创建我的错误):
echo 'print("HELLO WORLD")' >> struct.py
现在在我的shell中,留在当前目录中,我看到:
➜ client git:(master) ✗ a
HELLO WORLD
zsh: command not found: a
据推测,在您的案例中进行阴影处理的Python脚本正在做的事情比仅打印“HELLO WORLD”更耗费资源,因此悬而未决。