ndiff-PYTHONPATH环境变量

ndiff-PYTHONPATH环境变量,python,diff,nmap,Python,Diff,Nmap,我对Ndiff有问题,我不能执行它。(Nmap工作完美) 因此,我尝试使用ndiff并获得以下错误消息: 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

我对Ndiff有问题,我不能执行它。(Nmap工作完美)

因此,我尝试使用ndiff并获得以下错误消息:

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。但它不起作用,我做错了什么

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'

$ndiff firstScan.xml secondScann.xml>diffScan
回溯(最近一次呼叫最后一次):
文件“/usr/local/bin/ndiff”,第84行,在
sys.excepthook=ndif.excepthook
AttributeError:“模块”对象没有属性“excepthook”

您试图运行的命令
/usr/local/bin/ndiff
,是一个伪装的Python脚本(也就是说,它没有
.py
扩展名)

在该脚本顶部的某个位置,它尝试导入
ndiff
模块本身:

import ndiff
可以看到路径
/usr/local/
,它可能安装在
/usr/local/lib/python2.7/site packages/
(*)中。您需要将此路径添加到您的
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.excepthook
,而loose
ndiff.py
没有这些属性。删除松散的文件,您就可以开始了。

可能没有必要更改PYTHONPTH环境变量,发生的情况是ndiff脚本指向错误的路径或错误/不存在的文件。 只需编辑可能位于/usr/bin/ndiff中的ndiff脚本(作为二进制文件传递):

# sudo vi /usr/bin/ndiff
并找到以下行:INSTALL_LIB='

它应该读取python站点包目录的完整路径,例如: 安装_LIB='/usr/LIB/python2.7/site packages'

在其中查找名为ndiff.py的文件:

# sudo find /usr/lib/python2.7/site-packages -name ndiff.py
如果不存在任何内容,则必须创建该内容并将所有内容粘贴到其中:


那时一切都应该正常。

知道我有这个问题:usr/bin/awk:无法打开文件。/share/lib/ndiff/ndiff-2.00/ndiff.awk源代码行第1行源文件。/share/lib/ndiff/ndiff-2.00/ndiff.awk上下文是>>ndiff firstScan.xml secondScann.xml>diffScan最有可能是这个,您的
PYTHONPATH
需要包含
/usr/local/lib/python2.7/site包(您可以看到它没有被搜索,因此没有包含在内)
ndiff
可能只是Python模块的包装程序,如果没有正确的
PYTHONPATH
,它就找不到该模块;除了让事情复杂化之外,这没有任何帮助。我认为这是导致第二个错误的原因,因为
/usr/local/bin/ndiff
现在将在当前目录中看到一个
ndiff.py
文件作为ndiff模块(当然不是)。如果您有
ndiff.py
文件,请将其删除。@Evert,因此
无法导入ndiff模块:“没有名为ndiff的模块”。
来自bash是吗?完美:)它可以工作:)非常感谢。该文件是python2格式的。6@Loretta您的意思是在
/usr/local/lib/python2.6/site包内/
?因为这似乎有点奇怪,因为问题中的错误消息显示了Python 2.7。如果它工作,不要改变它,但在某个时候,你可以考虑做<代码> BREW更新<代码>,然后<代码> BREW升级<代码>。是的,我的意思是这样。没有错误消息,它工作正常。谢谢你的建议