Getting error: AttributeError: module 'nmap' has no attribute 'PortScanner'

Getting error: AttributeError: module 'nmap' has no attribute 'PortScanner'

我一直在寻找如何解决这个 Python 问题的答案:

AttributeError: module 'nmap' has no attribute 'PortScanner'

我想了解有关端口扫描的更多信息,但我什至无法在我正在使用的 Visual Studio 代码上安装该模块。我已经尝试了我和许多人能想到的一切:

  1. 卸载并重新安装 python-nmap 以及 nmap(因为它们是互连的)。
  2. 我已经尝试重命名模块本身。
  3. 我已经在不同的 IDE 上启动了我的代码
  4. 我创建了一个单独的文件夹并将模块和我的项目放在那里。

到目前为止没有成功..

这是我的代码:

import nmap


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

和输出:

/usr/local/bin/python3 /Users
/user2132/Desktop/PYTHONProjects/portscannning.py
Traceback (most recent call last):
File "/Users/user2132/Desktop/PYTHONProjects/portscannning.py", line 3, in <module>
nm = nmap.PortScanner()
AttributeError: module 'nmap' has no attribute 'PortScanner'

接下来我可以尝试什么?

P.S。我正在使用 MacOS

我能够重现错误。问题出在 nmap 库上。 pip install nmap 安装 nmap python librarypython-nmap 需要 nmap binary,而且 nmap python 库与 python-nmap 冲突,因为它们共享相同的模块名称。可以从 Nmap's official download page

安装正确的 nmap

请按照以下步骤操作:

步骤 1. 卸载库

pip uninstall nmap
pip uninstall python-nmap

步骤 2. 安装 python-nmap

pip install python-nmap

第 3 步。检查 nmap 是否已安装到您的系统中

which nmap

第三步,如果安装了继续下一步,如果没有:

转到 Nmap's official download page,为您的 OS 下载并安装 nmap。

请确保在安装过程中选择了 add to PATH 选项。

步骤 4. 重新启动系统(重新启动计算机)

在终端中使用 which nmap 命令检查 nmap 安装。


之后你可以检查 PortScanner 是否在 nmap.

import nmap
dir(nmap)

Returns

['ET',
 'PortScanner', <=== IS HERE!
 'PortScannerAsync',
 'PortScannerError',
 'PortScannerHostDict',
 'PortScannerTimeout',
 'PortScannerYield',
 'Process',
 '__author__',
 '__builtins__',
 '__cached__',
 '__doc__',
 '__file__',
 '__last_modification__',
 '__loader__',
 '__name__',
 '__package__',
 '__path__',
 '__spec__',
 '__version__',
 'convert_nmap_output_to_encoding',
 'csv',
 'io',
 'nmap',
 'os',
 're',
 'shlex',
 'subprocess',
 'sys']

期末考试

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

Returns

{'nmap': {'command_line': 'nmap -oX - -p 22-443 -sV 127.0.0.1',
  'scaninfo': {'tcp': {'method': 'syn', 'services': '22-443'}},
  'scanstats': {'timestr': 'Tue Mar 29 15:07:02 2022',
   'elapsed': '7.82',
   'uphosts': '1',
   'downhosts': '0',
   'totalhosts': '1'}},
...