module'对象没有属性'PortScanner
我在使用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 个回答
2
出现这个问题的原因是,你创建的模块叫做 nmap.py,这个名字和你想用的 requests 模块冲突了。
为了避免这种情况,你应该把你的模块改个名字。还有,可能你在创建 nmap.py 的时候,也生成了一个 nmap.pyc 的文件,这个文件和 nmap.py 在同一个地方。记得在改名后把这个 nmap.pyc 文件也删掉,因为解释器还是会查找这个文件,这样就会再次出现错误。
解决问题的例子:
把文件改名为 nmapscan.py,删除 nmap.pyc,然后再运行一次。
3
1 分析
如果你查看一下源代码 nmap.py
,它在目录 /usr/local/lib/python2.7/dist-packages/nmap/
下,你会发现里面没有 PortScanner
这个类。
2 解决方案
2.1 方法一
你应该删除目录 .../nmap/
以及里面的所有文件,然后在新的包目录下安装新的 nmap
包,或者使用 python setup.py install
来安装。
2.2 方法二
你也可以把新的包里的 nmap.py
文件复制到你的目录 .../MyFiles/
,和你的 Python 文件 nmaptest.py
一起,然后运行命令 python nmaptest.py
。
祝你好运!