安装python-nmap后调用portscanner提示Nmap program not found报错求助
python-nmap调用提示「nmap program not found」解决方案
- 报错根因说明:
python-nmap仅为Nmap工具的Python封装SDK,本身不内置Nmap二进制程序,该报错为Python运行时无法找到系统中安装的Nmap可执行文件,与python-nmap库是否安装无关。 - 第一步:验证当前运行上下文的Nmap可用性
在你执行Python脚本的同一个终端窗口执行命令nmap --version,如果未返回版本信息,说明你配置的环境变量未在当前终端生效,执行对应命令加载配置:- BASH环境执行:
source ~/.bashrc - ZSH环境执行:
source ~/.zshrc - Windows PowerShell环境执行:
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
- BASH环境执行:
- 第二步:核对Python运行时的环境变量
部分场景下Python运行时读取的PATH和当前终端的PATH不一致(比如sudo运行、虚拟环境运行、IDE启动运行等场景),在报错的脚本开头加入以下代码,打印运行时的PATH,确认是否包含Nmap所在目录:
import os print(os.environ['PATH'])
- 第三步:强制指定Nmap路径(优先推荐,可跳过环境变量配置)
初始化PortScanner时直接手动传入Nmap的绝对路径,不需要调整系统环境变量即可直接生效,示例如下(替换为你本地实际的Nmap可执行文件路径即可):
import nmap # 比如nmap存放在/usr/local/bin/nmap就按如下写法 scanner = nmap.PortScanner(nmap_search_path=['/usr/local/bin/nmap'])
- 额外注意事项:Windows系统下不要将Nmap安装在带中文或空格的目录下,避免路径识别异常。
内容的提问来源于stack exchange,提问作者Santosh Upadhayay
相关产品推荐
相关产品推荐

