10

我正在使用 Ubuntu 12.04 并安装了 python-nmap 来创建脚本。如果我使用 IDLE 并输入以下内容,它运行良好:

import nmap
nm = nmap.PortScanner()
nm.scan('127.0.0.1', '22-443')

但是,如果我在 Eclipse 中执行此操作,我会收到以下错误:

Traceback (most recent call last):
  File "/home/russ/workspace/ViPyNmap/MyFiles/nmaptest.py", line 2, in <module>
    nm = nmap.PortScanner()
AttributeError: 'module' object has no attribute 'PortScanner'

我已经将 egg 文件和文件夹添加到项目的 Eclipse 路径中,但没有成功。这样做后我也重新启动了 Eclipse,但没有运气。对于我对 Eclipse 和 Python 的缺乏经验,我深表歉意,并感谢您的帮助。

4

4 回答 4

32

您可能安装了包“nmap”,而不是“python-nmap”:

在此处输入图像描述

所以,只需卸载“nmap”并安装“python-nmap”:

pip uninstall nmap
pip install python-nmap
于 2017-07-06T10:20:27.667 回答
3

1 分析

如果您nmap.py在 directory中查看源代码/usr/local/lib/python2.7/dist-packages/nmap/,您会发现没有类 PortScanner。

2 解决方案

2.1 方法一

您应该删除.../nmap/包含文件的目录,并安装新的包nmappython setup.py install在新的包目录中。

2.2 方法二

您还可以使用 py 文件nmap.py将新包中的文件复制到您的目录 ,然后运行您的命令。.../MyFiles/nmaptest.pypython nmaptest.py

祝你好运 !

于 2017-02-12T11:44:19.783 回答
2

发生这种情况的原因是您命名为 nmap.py 的模块现在隐藏了您尝试使用的预期请求模块。

为避免这种情况,您应该将模块重命名为其他名称以避免这些情况。此外,您可能还会生成一个 nmap.pyc 文件,该文件位于您的 nmap.py 所在的本地。确保在重命名后也将其删除,因为解释器仍会引用该文件,从而重现错误。

问题解决示例:

将文件重命名为 nmapscan.py,删除 nmap.pyc 并再次运行。

于 2017-12-02T17:47:22.427 回答
2

上面的答案在 python 2.7 中运行良好,但是当我们在 python3 环境中工作时,以下将有助于解决它

pip卸载nmap pip卸载python-nmap pip3安装python-nmap

于 2019-03-28T11:49:32.933 回答