windows10和linux配置CRF++的python接口
来源:互联网 发布:淘宝客服工资怎么样 编辑:程序博客网 时间:2024/06/05 14:54
本笨妞自从用了python之后,就堕落了,能python的基本不java,能java的基本不c。然而CRF++是C版本的,尽管用的时候直接命令行就可以搞定,但还是想弄个python的接口,用起来方便。
我以为CRF++和libsvm一样直接复制进工程就可以加载了,其实不然。libsvm应该是已经做过python到cpp之间的build和install了,而CRF++虽然给出了python包,但是貌似要自己build和install.
好吧,自己动手,丰衣足食。
在Window下
1.首先将Makefile.msvc.in的后缀去掉,生成Makefile。
2.打开VS2013的命令行工具,进入CRF++-0.58的目录下,执行
nmake
执行中报错:
根据报错,将tagger.cpp的758行先屏蔽掉,重新编译通过。(这一行调用prob()函数没有给参数,报错了,而前面有一行prob(i,j)没有报错,可能是这个问题,后续看程序的时候理一理这个问题,先安装再说。)
3.首先确认自己是否已经安装了VCForPython,这好像是通过python编译C文件的工具,如果已经安装了,跳过此步。
我用的python2.72,所以安装的是VCForPython27。在官网上下载该工具。
安装完后,我自己编译的时候还是不能找到vcvarsall.bat,按照某位大神的指点,找到VCForPython的安装目录,我的为 C:\Users\your_user_name\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0
下面就有vcvarsall.bat。
打开python安装目录下的Lib\distutils\msvc9compiler.py,在函数find_vcvarsall下,直接返回上面的目录
def find_vcvarsall(version): """Find the vcvarsall.bat file At first it tries to find the productdir of VS 2008 in the registry. If that fails it falls back to the VS90COMNTOOLS env var. """ return r'C:\Users\your_user_name\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\vcvarsall.bat' vsbase = VS_BASE % version try: productdir = Reg.get_value(r"%s\Setup\VC" % vsbase, "productdir") except KeyError: productdir = None # trying Express edition if productdir is None: vsbase = VSEXPRESS_BASE % version try: productdir = Reg.get_value(r"%s\Setup\VC" % vsbase, "productdir") except KeyError: productdir = None log.debug("Unable to find productdir in registry") if not productdir or not os.path.isdir(productdir): toolskey = "VS%0.f0COMNTOOLS" % version toolsdir = os.environ.get(toolskey, None) if toolsdir and os.path.isdir(toolsdir): productdir = os.path.join(toolsdir, os.pardir, os.pardir, "VC") productdir = os.path.abspath(productdir) if not os.path.isdir(productdir): log.debug("%s is not a valid directory" % productdir) return None else: log.debug("Env var %s is not set or invalid" % toolskey) if not productdir: log.debug("No productdir found") return None vcvarsall = os.path.join(productdir, "vcvarsall.bat") if os.path.isfile(vcvarsall): return vcvarsall log.debug("Unable to find vcvarsall.bat") return None
然后编译就能找到了。
4.python的setup和extension
在CRF++-0.58里的python包下面有供build和install的setup.py, 程序如下:
#!/usr/bin/env pythonfrom distutils.core import setup,Extension,osimport stringsetup(name = "mecab-python", py_modules=["CRFPP"], ext_modules = [Extension("_CRFPP", ["CRFPP_wrap.cxx",], libraries=["crfpp", "pthread"]) ])
setup里面包含了一个扩展模块,扩展了C程序CRFPP_wrap.cxx,这个程序需要调用库文件crfpp.lib和pthread.lib。同时,还需要头文件crfpp.h。但是这些文件python文件夹下是没有的,crfpp.h可以直接拷贝根目录下的,但两个库文件没有。一开始看别人的博客,拷贝了别人生成的crfpp.lib和pthread.lib,执行
python setup.py build
报如下错误:
5.仔细研究后,觉得在make时生成的libcrfpp.lib应该是包含了所有库的,于是把自己生成的libcrfpp.lib拷贝进python,再次build,居然成功了。
6.执行
python setup.py install
7.在命令行打开python,并
import CRFPP
没有报错,安装成功。
在ubuntu下
./configuremakemake installcd pythonpython setup.py buildpython setup.py installln -s /usr/local/lib/libcrfpp.so* /usr/lib
编译源程序到配置python接口全部搞定。
测试ok.
在windows下配置还是花了较长时间的。编译、库文件都比较麻烦,中途差点就放弃了。不过这个过程使本笨妞了解到了python的setup、extension模块。
- windows10和linux配置CRF++的python接口
- linux环境安装CRF++及python接口
- windows下crf++的python接口安装
- CRF++ 在ubuntu 下 python接口的安装
- windows10 系统下为python配置numpy和scipy
- crf的Python实现代码
- crf++的java api配置
- linux下安装mxnet和python接口配置
- linux下安装warpctc,mxnet和python接口配置
- windows10配置jdk和Tomcat
- Windows10环境下faster rcnn的配置和安装
- LINUX系统下caffe开发环境和python接口的配置(利用GPU和CUDNN加速)
- Windows10上使用Caffe的Python接口进行图像分类例程
- python写的crf训练代码
- python写的crf训练代码
- ubuntu下caffe的python接口配置和参数提取
- Windows10下Python安装与环境配置
- Windows10 64位 Opencv+python 安装配置
- SQL Server中,触发器详解
- 19. 异常处理与File类
- 服务器更新python安装包
- 跨域访问
- c/c++调用libcurl库发送http请求的两种基本用法
- windows10和linux配置CRF++的python接口
- FontAwesome
- 前后端分离,跨域问题
- 反弹模型(bounce model)----adot, H, Hdot变化图
- PDF文件有密码怎么办 PDF密码解除的方法
- webstrom设置新建Vue文件、去除右侧边界白线
- chrome window.open 无效
- mac系统安装redis
- HTTP 405 错误 – 方法不被允许 (Method not allowed)【转载】