Fork me on GitHub

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支持的类型列表

window1.png

4、 输入cmake -G
“Visual Studio 15 2017 Win64” -DBUILD_SHARED_LIBS=on …/命令
window2.png

  • 提示命令执行失败,需要指定BOOST_ROOT参数

5、 下载boost源代码,解压到hyperscan目录中
window3.png

6、 输入cmake -G
“Visual Studio 15 2017 Win64” -D BOOST_ROOT=%cd%/…/boost_1_78_0/
-DBUILD_SHARED_LIBS=on …/命令

window4.png

  • 提示缺少PCRE和sqlite3

7、 下载PCRE、sqlite源代码并解压到hyperscan目录中

window5.png

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工程文件
window6.png

9、 输入cmake –build .命令执行编译,编译成功后分别在bin、lib目录下生成一系列文件
window7.png

  • bin目录列表
    window8.png

  • 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)
window9.png

  • 执行成功
  •  审核编辑:汤梓红

本文地址:https://www.6aiq.com/article/1665654223179
本文版权归作者和AIQ共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出