넌센스 명령을 입력 할 때마다이 파이썬 오류 메시지가 생성되는 이유는 무엇입니까?


16

"넌센스"명령을 입력 할 때마다이 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

어떻게 든 명령을 잘못 입력 할 때마다 파이썬이 실행됩니다.


1
@ripper : 흥미 롭습니다. 몇 가지 길 잃은 관찰. .bashrc에 파이썬과 연결된 것이 있습니까? 다른 사용자 계정에서도 동일한 동작이 발생합니까? 파이썬 2.7을 로컬로 설치 한 이유는 무엇입니까? 이 설치에서 기본 공식 파이썬은 무엇이며 2.7이 아닌 경우 설치 했습니까? 이 우분투 버전은 무엇입니까?
Faheem Mitha

@ Faheem-.bashrc와 관련된 파이썬은 없습니다. 파이썬을 로컬로 직접 설치했습니다. 기계에 다른 두 개의 파이썬이 설치되어 있음을 알고 있습니다. Ubuntu 10.10이 설치되어 있습니다.
ripper234

이것은 파이썬 설치가 길을 잃은 것 같습니다. 공식 시스템 파이썬 버전은 무엇이며 왜 2.7을 로컬에 설치 했습니까? 공식적으로 사용 가능한 버전이 아닙니까?
Faheem Mitha

@Faheem-귀하의 질문을 이해하지 못합니다. "공식"은 무슨 뜻입니까? 파이썬 2.7이 필요했기 때문에 설치했습니다. 이 상자의 관리자입니다. 나는 make / make install을 통해 파이썬을 설치했고 비린내가 아무것도하지 않았다.
ripper234

@ripper : 의미, 우분투는 바이너리 패키지로 제공했습니다. 파이썬을 입력하면 어떤 파이썬을 얻습니까?
Faheem Mitha

답변:


12

좋아, 그건 좀 더 명확 해 졌어. command-not-found파이썬 프로그램으로, 명령이 시스템에서 발견되지 않은 경우 실행됩니다. (그 기능은 안개가 낀 경우 대안 및 수정을 제안하는 것입니다.) 참조 /usr/bin/command-not-found. CommandNotFound모듈 을 가져 오려고 하는데 나사로 조여진 파이썬 설치를 명확하게 가리킬 수 없습니다. 나는별로 친숙하지 command-not-found않지만 파이썬 설치를 수정하면 문제가 해결 될 것이라고 생각합니다.

조금만 자세히 설명하면, 아마도 command-not-found기본 파이썬이 찾지 못하는 곳에 모듈이 위치했을 것입니다. 기본적으로 경로 문제입니다.

디버그 제안 :

1) 먼저 출력은 무엇입니까

$ which python

그리고 해당 파일의 패키지 / 설치는 무엇입니까?

2) 아래 코드에 해당하는 설비의 출력은 무엇입니까? 이 경로는이 파이썬의 가져 오기 경로입니다.

$ python
Python 2.6.6 (r266:84292, Dec 27 2010, 00:02:40) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 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']

1
가능한 해결책은 # apt-get remove command-not-found...
simon March

"파이썬 설치를 망쳤습니다"-정확히 무엇이 빠졌는지 알 수 있습니다. CommandNotFound는 핵심 파이썬 모듈입니까, 아니면 별도로 설치할 수 있습니까?
ripper234

@ripper : CommandNotFound는 command-not-found 패키지의 일부이며, 시스템에 이미 설치되어 있어야합니다. 그렇지 않으면이 메시지가 표시되지 않습니다. 그러나 패키지 관리자를 쿼리하여이를 쉽게 확인할 수 있습니다. dpkg -l 명령을 찾을 수 없음. 문제는 기본 파이썬 설치 에이 모듈이 표시되지 않는다는 것입니다. 위에서 디버깅 할 단계를 추가하겠습니다. 다른 사람은 자유롭게 수정하고 수정하십시오.
Faheem Mitha

이 후속 질문을 참조하십시오 -unix.stackexchange.com/questions/9711/…
ripper234

링크가 command-not-found끊어진 것처럼 보입니다 ( "명령을 찾을 수 없음"을 검색 할 때 "오류"가 예상되는 결과
인지 말하기 어렵지만

2

우분투 설치와 함께 제공되는 주식 2.6에서 3.2 파이썬으로 업그레이드했을 때 기본 대안을 2.6이 아닌 3.2로 설정하면이 문제가 발생했습니다.

당신이 당신을 보면 /etc/bash.bashrc파일의 repos의 대안을 찾기 위해이 파이썬 스크립트를 실행하도록 지시하는 선이있다. 패키지가 있지만 업그레이드 한 후에는 패키지를 제거 할 수 없습니다. 나는 단순히 /usr/share/command-not-foundand을 옮기고 /usr/lib/command_not_found_handler용어를 다시 시작했고 그것은 좋은 ol 'bash :처럼 작동합니다 command not found.


6
command_not_found처리기 를 비활성화하려면 엉망으로 /usr만들지 마십시오 (이는 후속 업그레이드로 인해 후속 업그레이드가 실패하거나 취소 될 수 있음). 대신을 변경하십시오 /etc/bash.bashrc. 또는 자신이 비활성화 ~/.bashrcunset -f command_not_found_handle.
Gilles 'SO- 악한 중지'

특히, /etc/bash.bashrc에 의해 제공되는 bash해당 패키지의 갱신을 깰 수 있도록, 패키지로 제공된다.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

2

우분투 14.04 LTS (버전 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  

이것이 가장 좋은 답변입니다. 필자의 경우 python3을 최신 마이너 버전으로 심볼릭 링크하는 것은 어리석은 결정이었습니다. 호환성이 깨지지 않아야한다고 생각합니다. 네, 교훈은 배웠습니다.
Guybrush Threepwood

0

문제는 $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있습니다.


0

"command-not-found"패키지는 리눅스 유틸리티입니다. 파이썬 세션뿐만 아니라 명령 쉘 프롬프트에서 알 수없는 명령에 응답합니다. (이 이름의 파이썬 패키지도 있습니다.)

의존성 사이에 파이썬이 있습니다. 즉, 트리거 될 때 파이썬을 사용합니다. 쉘이 PATH에서 찾을 수없는 명령을 입력 할 때마다 파이썬이 호출되는 이유를 설명합니다.

리눅스에는 command-not-found를 설치하는 'apt'패키지가 있습니다. 데비안 리눅스의 경우 다음에 카탈로그되어 있습니다 :

https://packages.debian.org/sid/admin/command-not-found


0

Python 버전을 전환하여 만든 문제 command-not-found/etc/bash.bashrc해결하는 데 필요한 모든 라인을 주석 처리하십시오 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.