每当我尝试$ a
在控制台(/ bin/bash)中调用不存在的命令(例如)时,解释器就会等待很长时间.当我中断它(^ 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
Run Code Online (Sandbox Code Playgroud)
如果设置PATH=""
修复它,那么某些东西正在影响一个被包调用的python command-not-found
包.我最近自己编写了一个名为的脚本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
Run Code Online (Sandbox Code Playgroud)
并在.py
那里寻找文件.其中一个与内置Python包之一共享一个名称.或者,您可以从您的目录中删除目录PATH
并将其重新添加,直到找到哪个目录为止.找到后,您需要将其删除或重命名.
这是一个shell one-liner为你做的:
for dir in $(echo $PATH | tr ":" "\n"); do ls -1 $dir | grep "[.]py"; done
Run Code Online (Sandbox Code Playgroud)
您可以通过尝试以下方法在自己的shell中测试它(从几天前重新创建我的错误):
echo 'print("HELLO WORLD")' >> struct.py
Run Code Online (Sandbox Code Playgroud)
现在在我的shell中,保持在当前目录中,我看到:
? client git:(master) ? a
HELLO WORLD
zsh: command not found: a
Run Code Online (Sandbox Code Playgroud)
据推测,在您的案例中进行阴影处理的Python脚本正在做的事情比仅打印"HELLO WORLD"更耗费资源,因此悬而未决.