Windows下python组件hyperscan的编译与安装

什么是hyperscan:
hyperscan 是英特尔推出的一款高性能正则表达式引擎,一次接口调用可以实现多条规则与多个对象之间的匹配,可以支持多种匹配模式,块模式和流模式,它是以pcre为原型开发,并以bsd许可证开源。
使用时分2步来实现:
第1步:对规则集进行预编译,编译时可以指定规则集类型的参数:正则表达式或文本模式
第2步:利用编译好的规则集进行匹配,匹配时可以指定为块模式或流模式
另外需要注意的是x86版本和arm版本的源代码是有区别的,官网下载x86版本(https://github.com/intel/hyperscan)无法在arm平台中编译通过,arm版本下载地址(https://github.com/tqltech/hyperscan/releases)。
下面以在windows x86平台为例来讲解hyperscan python组件的编译安装方法:
1、 下载和解压hyperscan-5.4.0
2、 在powershell下创建build目录,执行cd build
3、 输入cmake -g命令,查看-g支持的类型列表
4、 输入cmake -g “visual studio 15 2017 win64” -dbuild_shared_libs=on …/命令
提示命令执行失败,需要指定boost_root参数5、 下载boost源代码,解压到hyperscan目录中
6、 输入cmake -g “visual studio 15 2017 win64” -d boost_root=%cd%/…/boost_1_78_0/ -dbuild_shared_libs=on …/命令
提示缺少pcre和sqlite37、 下载pcre、sqlite源代码并解压到hyperscan目录中
8、 输入cmake -g “visual studio 15 2017 win64” -d boost_root=%cd%/…/boost_1_78_0/ -dbuild_shared_libs=on -d pcre_source=%cd%/…/pcre-8.45/ …/命令,命令执行成功,build目录下生成一系列的vs2017工程文件
9、 输入cmake –build .命令执行编译,编译成功后分别在bin、lib目录下生成一系列文件
bin目录列表
lib目录列表10、 下载hyperscan python源代码(https://pypi.org/project/hyperscan/),原来的setup.py无法在windows下安装成功,需要修改setup.py文件内容如下:
- - coding: utf-8 - -from distutils.core import *module1 = extension(hyperscan.hyperscan,include_dirs = ['src/hyperscan'], libraries = ['hs', 'hs_runtime'], library_dirs = [r'../hyperscan-5.4.0/build/lib'], extra_compile_args = ['/zi', '/od'], extra_link_args = ['/debug'], sources = [src/hyperscan/hyperscanmodule.c])setup(name=hyperscan, #打包文件名称 库说明文件的文件名version=0.2.0, package_dir = {'': 'src'},packages = ['hyperscan'],package_data = {'': ['*']},ext_modules=[module1])11、 输入python setup.py install命令进行python组件安装,提示安装失败,找不到hs_compile_lit_multi,
12、 在hs.def中增加导出函数hs_compile_lit_multi,重新编译hyperscan工程后再执行python组件安装脚本,安装成功
13、 成功执行python测试脚本表示安装成功,脚本如下:
import hyperscan
db = hyperscan.database()print(db)


GP232RNL——USB到UART桥接控制器
友恩半导体U651X3系列的三款开关电源芯片介绍
山东省科学院激光研究所刘统玉:光纤传感赋能煤矿安全
中国移动北京公司为献礼改革开放40年,促进5G技术加速落地
LoRa ZWS云应用(3)-智能抄表组态大屏篇
Windows下python组件hyperscan的编译与安装
工业4.0需求推动光学传感器市场发展,2026年销售额将达360亿美元
车规级磁环电感生产厂家科普磁环电感选型要点
什么是UWB芯片?UWB芯片市场如何?
三极管pnp和npn的区别
加拿大大四学霸,天才程序员和他的逆天语言模型
美国海军两大旗舰蓝岭号、惠特尼山号已经不再适合担任旗舰
中兴FTTR常用业务配置指导(上)
4.35V/4.2V芯片锂电池0.3A充电管理芯片板
实现了多媒体数据的同步传输的USB3.0 HUB设计方案
RUI3:简化物联网低功耗LoRaWAN®设备的开发(二)
谷歌新研究使用1024块TPU,将BERT的训练时间从3天成功缩短到76分钟
射频技术大不同|RFID技术及其在电子政务中的应用
MAX15041 内置开关的同步DC-DC转换器
华为Mate 40于今日正式全网开售