首页 > 系统相关 >Windows下python组件hyperscan的编译与安装

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

时间:2022-10-13 15:33:24浏览次数:71  
标签:hyperscan 编译 Windows hs python build cmake

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

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

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

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

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

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

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

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

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

· 提示缺少PCRE和sqlite3

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

Windows下python组件hyperscan的编译与安装_规则集_05

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

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

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

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

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

· bin目录列表

# -*- 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)

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

· 执行成功

标签:hyperscan,编译,Windows,hs,python,build,cmake
From: https://blog.51cto.com/u_15805954/5753535

相关文章

  • Python周期任务神器之Schedule模块使用详解
    Python中schedule模块关于定时任务使用方法_python_脚本之家(jb51.net)Python中schedule模块定时任务的使用方法(2)_python_脚本之家(jb51.net)......
  • Python进阶:如何将字符串常量转化为变量?
     前几天,我们​​Python猫交流学习群​​里的M同学提了个问题。这个问题挺有意思,经初次讨论,我们认为它无解。然而,我认为它很有价值,应该继续思考怎么解决,所以就在私密的知......
  • Python与家国天下
     导读:Python猫是一只喵星来客,它爱地球的一切,特别爱优雅而无所不能的Python。我是它的人类朋友豌豆花下猫,被授权润色与发表它的文章。如果你是第一次看到这个系列文章,那我......
  • Python多进程——进程池的开启和多进程操作同一个List
    ​为什么要使用多进程目标网站数据量多,想赶时间多获取点东西?数据库大批量的数据需要操作?单纯的想要节省时间,早早下班?............肯定会有人说【多线程】。Python的多线程为......
  • Python 为什么不支持 switch 语句?
    本文出自“Python为什么”系列,请查看​​全部文章​​在这篇文章里,我们会聊一聊为什么Python决定不支持switch语句。为什么想要聊这个话题呢?主要是因为switch在其它语......
  • python IP段指定端口扫描
    #!/usr/bin/python#-*-coding:utf-8-*-#查找哪台电脑开了远程端口fromsocketimport*#3389host='192.168.11.'opened_ports=[]foripinrange(1,2......
  • python版的羊了个羊,你见过没?
     最近不是出了个超火的游戏嘛,周围小伙伴都说好难玩,玩不过 看了下,发现就是个变种的连连看嘛,就尝试下写一个出来玩玩,当作是练手了 刚好找到一位大佬用C语言写的羊......
  • Windows bat jar
    1.在jar包目录新建一个start.bat文件,然后写入启动命令java-jarXXXX.jar2.仍然在此目录,新建start.vbs文件,然后写入一下命令,命令最后一个0是隐藏窗口运行createobj......
  • python3 http.server模块 搭建简易 http 服务器
    在命令行直接运行:python-mhttp.server80或python3-mhttp.server80会看到如下输出:ServingHTTPon0.0.0.0port80(http://0.0.0.0:80/)...在浏览器访问会......
  • python functools 模块
    pythonfunctools模块常见APIcmp_to_keycmp_to_key()是将比较函数转化为关键字函数。与使用接受关键字函数的方法一同使用,如(sorted(),min(),max()...),改函数主要......