2015-01-06 2 views
-1

Ndiff에 문제가 있습니다. 실행할 수 없습니다.ndiff - PYTHONPATH 환경 변수

Could not import the ndiff module: 'No module named ndiff'. 

I checked in these directories: 

/usr/local/bin 
/usr/local/bin 
/usr/local/bin/ndiff 
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip 
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7 
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin 
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac 
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages 
/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python 
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk 
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old 
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload 
/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC 
/Library/Python/2.7/site-packages 

If you installed Ndiff in another directory, you may have to add the 
modules directory to the PYTHONPATH environment variable. 

그래서 내가 ndiff의 경로를 검색하고 PYTHONPATH로 내보낼 :

그래서 내가 ndiff를 사용하여이 오류 메시지가 시도 (Nmap은 완벽하게 작동합니다). 하지만 효과가 없다. 내가 뭘 잘못하고있는 걸까?

which ndiff 
/usr/local/bin/ndiff 

나는 다시 설치 사제와 ndiff 및 nmap을하고이 코드

$ ndiff firstScan.xml secondScann.xml > diffScan 

Traceback (most recent call last): 
    File "/usr/local/bin/ndiff", line 84, in <module> 
    sys.excepthook = ndiff.excepthook 
AttributeError: 'module' object has no attribute 'excepthook' 
+0

알겠습니다. usr/bin/awk : 파일을 열 수 없습니다 ./share/lib/ndiff/ndiff-2.00/ndiff.awk 소스 행 번호 1 소스 파일 ./share/lib/ndiff/ ndiff-2.00/ndiff.awk 컨텍스트는 \t입니다. >>><<< – Loretta

+0

ndiff firstScan.xml secondScann.xml> diffScan이 하나입니다 – Loretta

+0

대부분의 경우 'PYTHONPATH'는'/ usr/local/lib/python2.7/site-packages' (검색되지 않으므로 포함되지 않음을 알 수 있습니다). 'ndiff'는 아마도 파이썬 모듈 주위의 래퍼 프로그램 일 뿐이며 올바른'PYTHONPATH'가 없으면 그 모듈을 찾을 수 없습니다. – Evert

답변

0

당신이 /usr/local/bin/ndiff를 실행하려는 명령을 실행하려고 후에 나는이 메시지가 알고, 변장 (즉, .py 확장자가 없음) 된 Python 스크립트입니다.

경로 /usr/local/ 본,
import ndiff 

가, 아마 /usr/local/lib/python2.7/site-packages/ (*)에 설치됩니다 해당 스크립트의 상단에

어딘가, 그것은 ndiff 모듈 자체를 수입하려고합니다. 당신은 당신의 PYTHONPATH에이 경로를 추가해야합니다

export PYTHONPATH=${PYTHONPATH}:/usr/local/lib/python2.7/site-packages 

이제, 스크립트가 계속 행복하게 모듈을 픽업 할 수 있습니다.

(*) 다른 위치에 설치 될 수 있습니다.이 경우 수동으로 위치를 찾아야합니다. 설치된 곳을 확인하기 위해 find /usr/local -name ndiff.py과 같은 것을 시도 할 수 있습니다.


번째 오류는 재를 설치 한 후, 어딘가에 현재 작업 디렉토리에 느슨한 ndiff.py에 의해 발생할 수 있습니다. 이 경우 /usr/local/bin/ndiff은 해당 파일을 가져오고 실제 ndiff 모듈이라고 생각합니다. 이후로 느슨한 ndiff.py에는없는 ndiff.excepthook과 같은 모듈 속성 중 일부에 액세스하려고 시도하면 실패합니다. 느슨한 파일을 제거하면 좋은 결과를 얻을 수 있습니다.

+0

완벽한 :) 작동합니다 :) 정말 고마워요. 파일은 python2.6에 존재했다. – Loretta

+0

@Loretta'/ usr/local/lib/python2.6/site-packages /'내부를 의미 하는가? 귀하의 질문에있는 오류 메시지가 파이썬 2.7을 보여 주므로 조금 이상해 보입니다. 작동하는 경우 변경하지 마십시오. 그러나 어느 시점에서 'brew update'를 수행 한 다음 'brew upgrade'를 수행 할 것을 고려할 수 있습니다. – Evert

+0

그래, 내 말은. 오류 메시지는 완벽하게 작동하지 않습니다. 조언 주셔서 감사합니다. – Loretta

0

아마도 PYTHONPTH 환경 변수를 변경할 필요가 없습니다. ndiff 스크립트가 잘못된 경로 나 잘못되었거나 존재하지 않는 파일을 가리키고있는 것입니다.

그것은 전체 경로를 읽어야 ... INSTALL_LIB = ' 그냥은/usr/빈/ndiff의 가능성에 위치한 (바이너리로 전달)을 ndiff 스크립트 편집 :

# sudo vi /usr/bin/ndiff 

를하고 줄을 찾습니다 예를 들면 다음과 같습니다. INSTALL_LIB = '/usr/lib/python2.7/site-packages'

ndiff라는 파일을 찾습니다.거기 평 : 없음이 존재하는 경우

# sudo find /usr/lib/python2.7/site-packages -name ndiff.py 

, 당신이 그것을 만들고 여기에 존재하는 모든 내용을 붙여 넣어야합니다 : https://raw.githubusercontent.com/nmap/nmap/master/ndiff/ndiff.py

그것은해야 모든 작업을 한 후.