"말도 안 되는" 명령을 입력할 때마다 이 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 2.6.6 (r266:84292, 2010년 12월 27일, 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
우분투 설치와 함께 제공된 기본 2.6에서 3.2 Python으로 업그레이드하고 기본 재정의를 2.6 대신 3.2로 설정했을 때 이 문제가 발생했습니다.
파일을 보면 /etc/bash.bashrc
이 Python 스크립트를 실행하여 저장소에서 대안을 찾으라고 지시하는 줄이 있습니다. 이에 대한 패키지가 있지만 업그레이드 후에는 제거할 수 없습니다. 나는 단순히 용어를 이동 /usr/share/command-not-found
하고 /usr/lib/command_not_found_handler
다시 시작했고 그것은 좋은 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
다음을 사용하여 셸에서 문제를 해결할 수 있습니다.
$ export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
이것은 일시적입니다! 재부팅 후에도 문제가 지속되면 $PATH
환경 설정 파일 중 하나 에 문제를 넣었을 가능성이 높습니다 /etc
.