在Windows 10 python 2.7(64位)上安装pypcap

在Windows 10 python 2.7(64位)上安装pypcap,python,pcap,Python,Pcap,我正在尝试从以下位置安装pypcap: 我正在尝试在Windows10-64位和Python2.7.1164位上安装它。我下载了源代码并将其移动到c:\pypcap。下载并安装了pyrex。它将wpdpack文件放入c:\wpdpack中,如安装页面所示。创建了配置文件并更改了makefile 我还从他们的网站上安装了带有basic包和g++包的mingw 我试着做: C:\pypcap> set PATH=%PATH%;c:\MinGW\bin;c:\Python27 C:\pypcap

我正在尝试从以下位置安装pypcap:

我正在尝试在Windows10-64位和Python2.7.1164位上安装它。我下载了源代码并将其移动到
c:\pypcap
。下载并安装了pyrex。它将
wpdpack
文件放入
c:\wpdpack
中,如安装页面所示。创建了配置文件并更改了makefile

我还从他们的网站上安装了带有basic包和
g++
包的
mingw

我试着做:

C:\pypcap> set PATH=%PATH%;c:\MinGW\bin;c:\Python27
C:\pypcap> mingw32-make
在这里它失败了,它得到了以下错误:

In file included from C:\Python27\include/Python.h:8:0,
                 from pcap.c:4:
C:\Python27\include/pyconfig.h:68:16: fatal error: io.h: No such file or directory
 #include <io.h>
在那之后,我尝试使用轮子下载,但也失败了


提前感谢您的帮助

更改答案

  • 下载

  • 运行它

  • 选择:

    • 明W32基地

    • mingw32-gcc-g++

  • 选择菜单安装=>应用更改

现在您有了一个功能齐全的MinGW-GCC编译器,包括头文件

io.h
应位于
C:\MinGW\include

更新

我现在已经使用Python2.7.11(在Wine下,因为我不运行Windows,但应该是相同的)按照您在问题中描述的过程成功地编译了它

我必须做的一件事是修改
pypcap
setup.py
的部分内容,因为它没有设置到pcap includes的正确路径

如果你到那里,请告诉我

希望能有帮助

更改为
setup.py

用此修改版本替换功能
\u pcap\u config

def _pcap_config(self, dirs=[ None ]):
    cfg = {}
    if not dirs[0]:
        dirs = [ '/usr', sys.prefix ] + glob.glob('/opt/libpcap*') + \
               glob.glob('../libpcap*') + glob.glob('../wpdpack*')
    for d in dirs:
        for sd in ('include/pcap', 'include', ''):
            if os.path.exists(os.path.join(d, sd, 'pcap.h')):
                cfg.setdefault('include_dirs', []).append(os.path.join(d, sd))
    for d in dirs:
        for sd in ('include/pcap', 'include', ''):
            for sd in ('lib', 'lib64', ''):
                for lib in (('pcap', 'libpcap.a'),
                            ('pcap', 'libpcap.so'),
                            ('pcap', 'libpcap.dylib'),
                            ('wpcap', 'wpcap.lib')):
                    if os.path.exists(os.path.join(d, sd, lib[1])):
                        cfg['library_dirs'] = [ os.path.join(d, sd) ]
                        cfg['libraries'] = [ lib[0] ]
                        if lib[0] == 'wpcap':
                            cfg['libraries'].append('iphlpapi')
                            cfg['extra_compile_args'] = \
                                [ '-DWIN32', '-DWPCAP' ]
                        print 'found', cfg
                        self._write_config_h(cfg)
                        return cfg
    raise Exception("couldn't find pcap build or installation directory")
它基本上只是将包含
pcap.h
ALL路径添加到includes

汇编

Z:\pypcap-master>mingw32-make
python setup.py config --with-pcap=c:\\wpdpack
running config
found {'libraries': ['wpcap', 'iphlpapi'], 'library_dirs': ['c:\\wpdpack\\lib'], 'extra_compile_args': ['-DWIN32', '-DWPCAP'], 'include_dirs': ['c:\\wpdpack\\include/pcap', 'c:\\wpdpack\\include']}
python setup.py build
running build
running build_ext
building 'pcap' extension
creating build
creating build\temp.win32-2.7
creating build\temp.win32-2.7\Release
C:\MinGW\bin\gcc.exe -mdll -O -Wall -Ic:\wpdpack\include/pcap -Ic:\wpdpack\include -IC:\Python27\include -IC:\Python27\PC -c pcap.c -o build\temp.win32-2.7\Release\pcap.o -DWIN32 -DWPCAP
pcap.c: In function '__pyx_f_4pcap_3bpf_filter':
pcap.c:328:48: warning: passing argument 2 of 'PyObject_AsCharBuffer' from incompatible pointer type
   __pyx_1 = (PyObject_AsCharBuffer(__pyx_v_buf,(&__pyx_v_p),(&__pyx_v_n)) < 0);
                                                ^
In file included from C:\Python27\include/Python.h:133:0,
                 from pcap.c:4:
C:\Python27\include/abstract.h:476:22: note: expected 'const char **' but argument is of type 'char **'
      PyAPI_FUNC(int) PyObject_AsCharBuffer(PyObject *obj,
                      ^
pcap.c:337:86: warning: pointer targets in passing argument 2 of 'bpf_filter' differ in signedness [-Wpointer-sign]
   __pyx_1 = (bpf_filter(((struct __pyx_obj_4pcap_bpf *)__pyx_v_self)->fcode.bf_insns,__pyx_v_p,__pyx_v_n,__pyx_v_n) == 0);
                                                                                      ^
In file included from pcap.c:30:0:
c:\wpdpack\include/pcap/pcap.h:354:7: note: expected 'const u_char *' but argument is of type 'char *'
 u_int bpf_filter(const struct bpf_insn *, const u_char *, u_int, u_int);
       ^
pcap.c: In function '__pyx_f_4pcap_4pcap_dispatch':
pcap.c:955:91: warning: passing argument 3 of 'pcap_dispatch' from incompatible pointer type
   __pyx_v_n = pcap_dispatch(((struct __pyx_obj_4pcap_pcap *)__pyx_v_self)->__pcap,__pyx_1,__pyx_f_4pcap___pcap_handler,((unsigned char *)(&__pyx_v_ctx)));
                                                                                           ^
In file included from pcap.c:30:0:
c:\wpdpack\include/pcap/pcap.h:300:5: note: expected 'pcap_handler' but argument is of type 'void (*)(void *, struct pcap_pkthdr *, char *)'
 int pcap_dispatch(pcap_t *, int, pcap_handler, u_char *);
     ^
pcap.c: In function '__pyx_f_4pcap_4pcap_loop':
pcap.c:1059:99: warning: passing argument 3 of 'pcap_ex_next' from incompatible pointer type
     __pyx_v_n = pcap_ex_next(((struct __pyx_obj_4pcap_pcap *)__pyx_v_self)->__pcap,(&__pyx_v_hdr),(&__pyx_v_pkt));
                                                                                                   ^
In file included from pcap.c:31:0:
pcap_ex.h:13:7: note: expected 'u_char **' but argument is of type 'char **'
 int   pcap_ex_next(pcap_t *pcap, struct pcap_pkthdr **hdr, u_char **pkt);
       ^
pcap.c: In function '__pyx_f_4pcap_4pcap_sendpacket':
pcap.c:1154:98: warning: pointer targets in passing argument 2 of 'pcap_sendpacket' differ in signedness [-Wpointer-sign]
   __pyx_3 = PyInt_FromLong(pcap_sendpacket(((struct __pyx_obj_4pcap_pcap *)__pyx_v_self)->__pcap,__pyx_1,__pyx_2)); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 337; goto __pyx_L1;}
                                                                                                  ^
In file included from pcap.c:30:0:
c:\wpdpack\include/pcap/pcap.h:311:5: note: expected 'const u_char *' but argument is of type 'char *'
 int pcap_sendpacket(pcap_t *, const u_char *, int);
     ^
pcap.c: In function '__pyx_f_4pcap_4pcap___next__':
pcap.c:1312:99: warning: passing argument 3 of 'pcap_ex_next' from incompatible pointer type
     __pyx_v_n = pcap_ex_next(((struct __pyx_obj_4pcap_pcap *)__pyx_v_self)->__pcap,(&__pyx_v_hdr),(&__pyx_v_pkt));
                                                                                                   ^
In file included from pcap.c:31:0:
pcap_ex.h:13:7: note: expected 'u_char **' but argument is of type 'char **'
 int   pcap_ex_next(pcap_t *pcap, struct pcap_pkthdr **hdr, u_char **pkt);
       ^
C:\MinGW\bin\gcc.exe -mdll -O -Wall -Ic:\wpdpack\include/pcap -Ic:\wpdpack\include -IC:\Python27\include -IC:\Python27\PC -c pcap_ex.c -o build\temp.win32-2.7\Release\pcap_ex.o -DWIN32 -DWPCAP
pcap_ex.c: In function 'pcap_ex_next':
pcap_ex.c:237:34: warning: passing argument 3 of 'pcap_next_ex' from incompatible pointer type
  return (pcap_next_ex(pcap, hdr, pkt));
                                  ^
In file included from pcap_ex.c:16:0:
c:\wpdpack\include/pcap/pcap.h:303:6: note: expected 'const u_char **' but argument is of type 'u_char **'
 int  pcap_next_ex(pcap_t *, struct pcap_pkthdr **, const u_char **);
      ^
writing build\temp.win32-2.7\Release\pcap.def
creating build\lib.win32-2.7
C:\MinGW\bin\gcc.exe -shared -s build\temp.win32-2.7\Release\pcap.o build\temp.win32-2.7\Release\pcap_ex.o build\temp.win32-2.7\Release\pcap.def -Lc:\wpdpack\lib -LC:\Python27\libs -LC:\Python27\PCbuild -LC:\Python27\PC\VS9.0 -lwpcap -liphlpapi -lpython27 -lmsvcr90 -o build\lib.win32-2.7\pcap.pyd

Z:\pypcap-master>
Z:\pypcap master>mingw32 make
python setup.py config--使用pcap=c:\\wpdpack
运行配置
找到{'libraries':['wpcap','iphlpapi'],'library_dirs':['c:\\wpdpack\\lib'],'extra_compile_args':['-DWIN32','-DWPCAP'],'include_dirs':['c:\\wpdpack\\include/pcap','c:\\wpdpack\\include']
python setup.py构建
运行构建
运行build_ext
建筑“pcap”扩展
创建构建
正在创建生成\temp.win32-2.7
正在创建build\temp.win32-2.7\Release
C:\MinGW\bin\gcc.exe-mdll-O-Wall-Ic:\wpdpack\include/pcap-Ic:\wpdpack\include-Ic:\Python27\include-Ic:\Python27\PC-C pcap.C-O build\temp.win32-2.7\Release\pcap.O-DWPCAP
pcap.c:在函数“\uuuPyx\uF\u4pCap\u3bpf\uFilter”中:
pcap.c:328:48:警告:从不兼容的指针类型传递'PyObject_AsCharBuffer'的参数2
__pyx_1=(PyObject_AsCharBuffer(uupyx_v_buf,(&uuupyx_v_p),(&uuuupyx_v_n))<0;
^
在C:\Python27\include/Python.h:133:0中包含的文件中,
摘自pcap.c:4:
C:\Python27\include/abstract.h:476:22:注意:应为“const char**”,但参数的类型为“char**”
PyAPI_FUNC(int)PyObject_AsCharBuffer(PyObject*obj,
^
pcap.c:337:86:警告:“bpf_filter”传递参数2中的指针目标的符号性不同[-Wpointer sign]
__pyx_1=(bpf_过滤器(((结构pyx_对象BpCap_bpf*)pyx_v_self)->fcode.bf_insns,uuPyx_v_p,uuuPyx_v_n,uuuuuuPyx_v_n)=0);
^
在pcap.c中包含的文件中:30:0:
c:\wpdpack\include/pcap/pcap.h:354:7:注意:应为“const u_char*”,但参数的类型为“char*”
u_int bpf_过滤器(常量结构bpf_insn*,常量u_char*,u_int,u_int);
^
pcap.c:在函数“\uuuuPyx\uF\u4PCAP\u4PCAP\uDispatch”中:
pcap.c:955:91:警告:从不兼容的指针类型传递“pcap\u dispatch”的参数3
__pyx_v_n=pcap_分派((结构pyx_obj_4pcap*)pyx_v_self)->pcap,pyx_1,pyx_f_4pcap_处理程序,((未签名字符*)(&(未签名字符*);
^
在pcap.c中包含的文件中:30:0:
c:\wpdpack\include/pcap/pcap.h:300:5:注意:应为“pcap\u handler”,但参数类型为“void(*)(void*,struct pcap\u pkthdr*,char*)”
int pcap_分派(pcap_t*,int,pcap_处理程序,u_字符*);
^
pcap.c:在函数“\uuupyx\uf\u4pcap\u4pcap\u循环”中:
pcap.c:1059:99:警告:从不兼容的指针类型传递“pcap_ex_next”的参数3
__pyx_v_n=pcap_ex_next((结构pyx_obj_4pcap_pcap*)pyx_v_self)->pcap,(&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&;
^
在pcap.c中包含的文件中:31:0:
pcap_ex.h:13:7:注意:应为'u_char**',但参数的类型为'char**'
int pcap_ex__next(pcap_t*pcap,结构pcap_pkthdr**hdr,u_char**pkt);
^
pcap.c:在函数“\uuupyx\uf\u4pcap\u4pcap\usendpacket”中:
pcap.c:1154:98:警告:“pcap_sendpacket”的传递参数2中的指针目标的符号性不同[-Wpointer sign]
__pyx_3=PyInt_FromLong(pcap_sendpacket((struct_pyx_obj_4pcap_pcap*)uuupyx_v_self)->uuupcap,uuuupyx_1,uuuuupyx_2);if(!(uuuuuuupyx_pyx_3){uuuuuuupyx_文件名=\uuuuuuupyx_f[0]\uuuuuuuuupyx_x_lineno=337;goto_uuuuuupyx_x_x_1}
^
在pcap.c中包含的文件中:30:0:
c:\wpdpack\include/pcap/pcap.h:311:5:注意:应为“const u_char*”,但参数的类型为“char*”
int pcap_sendpacket(pcap_t*,const u_char*,int);
^
pcap.c:在函数“\uuuPyx\uF\u4PCAP\u4PCAP\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu”中:
pcap.c:1312:99:警告:从不兼容的指针类型传递“pcap_ex_next”的参数3
__pyx_v_n=pcap_ex_next((结构pyx_obj_4pcap_pcap*)pyx_v_self)->pcap,(&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&;
^
在pcap.c中包含的文件中:31:0:
pcap_ex.h:13:7:注意:应为'u_char**',但参数的类型为'char**'
int pcap_ex_next(pcap_t
Z:\pypcap-master>mingw32-make
python setup.py config --with-pcap=c:\\wpdpack
running config
found {'libraries': ['wpcap', 'iphlpapi'], 'library_dirs': ['c:\\wpdpack\\lib'], 'extra_compile_args': ['-DWIN32', '-DWPCAP'], 'include_dirs': ['c:\\wpdpack\\include/pcap', 'c:\\wpdpack\\include']}
python setup.py build
running build
running build_ext
building 'pcap' extension
creating build
creating build\temp.win32-2.7
creating build\temp.win32-2.7\Release
C:\MinGW\bin\gcc.exe -mdll -O -Wall -Ic:\wpdpack\include/pcap -Ic:\wpdpack\include -IC:\Python27\include -IC:\Python27\PC -c pcap.c -o build\temp.win32-2.7\Release\pcap.o -DWIN32 -DWPCAP
pcap.c: In function '__pyx_f_4pcap_3bpf_filter':
pcap.c:328:48: warning: passing argument 2 of 'PyObject_AsCharBuffer' from incompatible pointer type
   __pyx_1 = (PyObject_AsCharBuffer(__pyx_v_buf,(&__pyx_v_p),(&__pyx_v_n)) < 0);
                                                ^
In file included from C:\Python27\include/Python.h:133:0,
                 from pcap.c:4:
C:\Python27\include/abstract.h:476:22: note: expected 'const char **' but argument is of type 'char **'
      PyAPI_FUNC(int) PyObject_AsCharBuffer(PyObject *obj,
                      ^
pcap.c:337:86: warning: pointer targets in passing argument 2 of 'bpf_filter' differ in signedness [-Wpointer-sign]
   __pyx_1 = (bpf_filter(((struct __pyx_obj_4pcap_bpf *)__pyx_v_self)->fcode.bf_insns,__pyx_v_p,__pyx_v_n,__pyx_v_n) == 0);
                                                                                      ^
In file included from pcap.c:30:0:
c:\wpdpack\include/pcap/pcap.h:354:7: note: expected 'const u_char *' but argument is of type 'char *'
 u_int bpf_filter(const struct bpf_insn *, const u_char *, u_int, u_int);
       ^
pcap.c: In function '__pyx_f_4pcap_4pcap_dispatch':
pcap.c:955:91: warning: passing argument 3 of 'pcap_dispatch' from incompatible pointer type
   __pyx_v_n = pcap_dispatch(((struct __pyx_obj_4pcap_pcap *)__pyx_v_self)->__pcap,__pyx_1,__pyx_f_4pcap___pcap_handler,((unsigned char *)(&__pyx_v_ctx)));
                                                                                           ^
In file included from pcap.c:30:0:
c:\wpdpack\include/pcap/pcap.h:300:5: note: expected 'pcap_handler' but argument is of type 'void (*)(void *, struct pcap_pkthdr *, char *)'
 int pcap_dispatch(pcap_t *, int, pcap_handler, u_char *);
     ^
pcap.c: In function '__pyx_f_4pcap_4pcap_loop':
pcap.c:1059:99: warning: passing argument 3 of 'pcap_ex_next' from incompatible pointer type
     __pyx_v_n = pcap_ex_next(((struct __pyx_obj_4pcap_pcap *)__pyx_v_self)->__pcap,(&__pyx_v_hdr),(&__pyx_v_pkt));
                                                                                                   ^
In file included from pcap.c:31:0:
pcap_ex.h:13:7: note: expected 'u_char **' but argument is of type 'char **'
 int   pcap_ex_next(pcap_t *pcap, struct pcap_pkthdr **hdr, u_char **pkt);
       ^
pcap.c: In function '__pyx_f_4pcap_4pcap_sendpacket':
pcap.c:1154:98: warning: pointer targets in passing argument 2 of 'pcap_sendpacket' differ in signedness [-Wpointer-sign]
   __pyx_3 = PyInt_FromLong(pcap_sendpacket(((struct __pyx_obj_4pcap_pcap *)__pyx_v_self)->__pcap,__pyx_1,__pyx_2)); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 337; goto __pyx_L1;}
                                                                                                  ^
In file included from pcap.c:30:0:
c:\wpdpack\include/pcap/pcap.h:311:5: note: expected 'const u_char *' but argument is of type 'char *'
 int pcap_sendpacket(pcap_t *, const u_char *, int);
     ^
pcap.c: In function '__pyx_f_4pcap_4pcap___next__':
pcap.c:1312:99: warning: passing argument 3 of 'pcap_ex_next' from incompatible pointer type
     __pyx_v_n = pcap_ex_next(((struct __pyx_obj_4pcap_pcap *)__pyx_v_self)->__pcap,(&__pyx_v_hdr),(&__pyx_v_pkt));
                                                                                                   ^
In file included from pcap.c:31:0:
pcap_ex.h:13:7: note: expected 'u_char **' but argument is of type 'char **'
 int   pcap_ex_next(pcap_t *pcap, struct pcap_pkthdr **hdr, u_char **pkt);
       ^
C:\MinGW\bin\gcc.exe -mdll -O -Wall -Ic:\wpdpack\include/pcap -Ic:\wpdpack\include -IC:\Python27\include -IC:\Python27\PC -c pcap_ex.c -o build\temp.win32-2.7\Release\pcap_ex.o -DWIN32 -DWPCAP
pcap_ex.c: In function 'pcap_ex_next':
pcap_ex.c:237:34: warning: passing argument 3 of 'pcap_next_ex' from incompatible pointer type
  return (pcap_next_ex(pcap, hdr, pkt));
                                  ^
In file included from pcap_ex.c:16:0:
c:\wpdpack\include/pcap/pcap.h:303:6: note: expected 'const u_char **' but argument is of type 'u_char **'
 int  pcap_next_ex(pcap_t *, struct pcap_pkthdr **, const u_char **);
      ^
writing build\temp.win32-2.7\Release\pcap.def
creating build\lib.win32-2.7
C:\MinGW\bin\gcc.exe -shared -s build\temp.win32-2.7\Release\pcap.o build\temp.win32-2.7\Release\pcap_ex.o build\temp.win32-2.7\Release\pcap.def -Lc:\wpdpack\lib -LC:\Python27\libs -LC:\Python27\PCbuild -LC:\Python27\PC\VS9.0 -lwpcap -liphlpapi -lpython27 -lmsvcr90 -o build\lib.win32-2.7\pcap.pyd

Z:\pypcap-master>
    set INCLUDE=%INCLUDE%;c:\WpdPack\Include
    set LIB=%LIB%;c:\WpdPack\Lib
    pushd C:\pypcap-1.1.4
    python setup.py install