我正在使用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的经验缺乏表示歉意,并感谢他们的帮助。
答案 0 :(得分:17)
您可能已经安装了包&#34; nmap&#34;,而不是&#34; python-nmap&#34;:
所以,只需卸载&#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)
如果您在目录nmap.py
中看到源代码/usr/local/lib/python2.7/dist-packages/nmap/
,您会发现没有类PortScanner。
您应该删除包含文件的目录.../nmap/
,并在新的包目录中安装新的包nmap
或python setup.py install
。
您还可以使用py文件nmap.py
将新包中的文件.../MyFiles/
复制到您的目录nmaptest.py
,然后运行命令python nmaptest.py
。
祝你好运!
答案 3 :(得分:0)
上面的答案在python 2.7中很好用,但是当我们在python3环境中工作时,以下内容将有助于解决
pip卸载nmap pip卸载python-nmap pip3安装python-nmap