2017-07-28 312 views
0

我得到的是nmap的是不是我的路径中找到(使用python-NMAP)的错误。但是,这是在我的路径。PortScannerError“中未找到路径NMAP程序”(但它是在路径)

Nmap的工作,当我在Python执行我的剧本,但是当我使用pyinstaller的代码冻结的.exe文件,当我尝试运行我的代码,我得到这个错误:

Traceback (most recent call last): 
    File "utils\map_network.py", line 7, in scan_network 
    File "site-packages\nmap\nmap.py", line 131, in __init__ 
PortScannerError: 'nmap program was not found in path. PATH is : 

C:\\Program Files (x86)\\Intel\\iCLS Client\\; 
C:\\Program Files\\Intel\\iCLS Client\\; 
C:\\ProgramData\\Oracle\\Java\\javapath; 
C:\\windows\\system32;C:\\windows; 
C:\\windows\\System32\\Wbem; 
C:\\windows\\System32\\WindowsPowerShell\\v1.0\\; 
C:\\Python27\\; 
C:\\Python27\\Scripts\\; 
C:\\Program Files (x86)\\Intel\\Intel(R) Management Engine Components\\DAL; 
C:\\Program Files\\Intel\\Intel(R) Management Engine Components\\DAL; 
C:\\Program Files (x86)\\Intel\\Intel(R) Management Engine Components\\IPT; 
C:\\Program Files\\Intel\\Intel(R) Management Engine Components\\IPT; 

C:\\Program Files (x86)\\Nmap; 

C:\\Users\\sillico\\AppData\\Local\\Microsoft\\WindowsApps; 
C:\\Users\\sillico\\AppData\\Local\\Programs\\Git\\cmd' 

正如你可以看到,我的PATH中有Nmap。有什么想法吗?

+0

大概'subprocess.Popen'失败。我看到,它只是重定向'stdout',留下标准输入和标准错误的电流值的来源。这可能在Windows 7中,如果你冻结这是一个非控制台应用程序的问题,因为理线可在其标准的句柄继承无效控制台句柄值。在这种情况下,解决方法是在启动时将进程标准句柄设置为NULL。 – eryksun

+0

例如:'进口ctypes的;''KERNEL32 = ctypes.WinDLL( 'KERNEL32',use_last_error = TRUE);在''为H(-10,-11,-12):kernel32.SetStdHandle(H,无)' 。 – eryksun

回答

0

我设法通过升级到Python 3.5来解决这个错误。正在使用Python 2.7。