'module'对象没有属性'PortScanner'

时间:2013-02-16 17:39:20

标签: python eclipse

我正在使用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 个答案:

答案 0 :(得分:17)

您可能已经安装了包&#34; nmap&#34;,而不是&#34; python-nmap&#34;:

enter image description here

所以,只需卸载&#34; nmap&#34;并安装&#34; python-nmap&#34;:

pip uninstall nmap
pip install python-nmap

答案 1 :(得分:1)

之所以发生这种情况,是因为您命名为nmap.py的模块现在正在影响您尝试使用的预期请求模块。

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

解决问题的示例:

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

答案 2 :(得分:0)

1分析

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

2解决方案

2.1方法一

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

2.2方法二

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

祝你好运!

答案 3 :(得分:0)

上面的答案在python 2.7中很好用,但是当我们在python3环境中工作时,以下内容将有助于解决

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