Installing pypcap on Windows 10 python 2.7 (64 bit)
我正在尝试从以下位置安装pypcap:https://github.com/dugsong/pypcap/blob/master/INSTALL#L75
我正在尝试在Windows 10-64位和python 2.7.11 64位上安装它。我下载了源并将其移至
我还从他们的网站上安装了基本包和
我尝试做:
1 2 | C:\\pypcap> set PATH=%PATH%;c:\\MinGW\\bin;c:\\Python27 C:\\pypcap> mingw32-make |
在这里失败,它得到以下错误:
1 2 3 4 | 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> |
所以我没有这个
尝试之前,我尝试做
1 2 3 4 5 6 7 8 | C:\\pypcap>pip install pypcap Collecting pypcap Using cached pypcap-1.1.4.tar.gz Complete output from command python setup.py egg_info: pcap.h not found ---------------------------------------- Command"python setup.py egg_info" failed with error code 1 in c:\\users\\USER\\appdata\\local\\temp\\pip-build-fvgkhs\\pypcap\\ |
,然后我尝试使用滚轮下载,但同样失败。
在此先感谢您的帮助
解压缩WinPcap Developer包,以便您具有
解压缩pypcap源代码,以便拥有
安装适用于Python 2.7的Microsoft Visual C编译器
从以下位置启动有关您的Python27位的cmd提示符:
使用以下命令从该cmd提示符安装/构建pypcap:
1 2 3 4 | set INCLUDE=%INCLUDE%;c:\\WpdPack\\Include set LIB=%LIB%;c:\\WpdPack\\Lib pushd C:\\pypcap-1.1.4 python setup.py install |
更改的答案
-
下载https://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download。
-
运行。
-
选择:
-
mingw32-base
-
mingw32-gcc-g
-
-
选择菜单安装=>应用更改
现在,您已经具有功能齐全的MinGW GCC编译器,包括头文件。
更新
我现在已经按照问题中描述的步骤,使用Python 2.7.11(在Wine上,因为我没有运行Windows,但应该是相同的)成功地编译了它。
我要做的一件事是修改
让我知道是否/何时到达。
希望有帮助。
更改为
用此修改后的版本替换功能
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 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") |
它基本上只是将包含
编译
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | 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\ elease 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\ elease\\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\ elease\\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\ elease\\pcap.def creating build\\lib.win32-2.7 C:\\MinGW\\bin\\gcc.exe -shared -s build\\temp.win32-2.7\ elease\\pcap.o build\\temp.win32-2.7\ elease\\pcap_ex.o build\\temp.win32-2.7\ elease\\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> |
链接
对于MinGW(32位),您需要安装32位Python。使用64位Python,您需要安装MinGW(64位)。
因此您可以安装32位Python或安装64位MinGW。
我们现在关闭,您将成为:-)