在Windows上安装pymatbridge

时间:2014-05-17 21:52:43

标签: python matlab zeromq ipython-magic

在pymatbridge的0.3版本中,为ZMQ添加了一个额外的依赖项。要安装此版本,您可能需要编译一个链接到zeromq的messenger mex扩展名。然而,在某些情况下,这很难做到。

有没有人有在运行Windows的计算机上从源安装pymatbridge的成功案例?

3 个答案:

答案 0 :(得分:4)

这是我的设置和构建说明;为冗长道歉 - 这是我为实验室笔记本写的一篇文章。

规格:

Windows 8.1 (64 bit)
Anaconda 1.9.1
python 2.7.6
MinGW
TDM GCC 4.8.1

首先我安装了MS Visual C++ & SDK 7.1。很早就安装失败的可能原因是存在其他Visual C ++编译器版本和/或SDK - 在成功安装SDK 7.1之前,我必须卸载其中的一些。

首先,使用Windows SDK 7.1 Command Prompt,我

mex -setup

并选择新安装的编译器。在我的情况下

Select a compiler:
[1] Microsoft Software Development Kit (SDK) 7.1 in 
C:\Program Files (x86)\Microsoft Visual Studio 10.0

[0] None

Compiler:

我选择了号码1。 接下来,我下载并安装了预先构建的64位ZMQ 3.2.4,并从ZMQ 3.2.4安装位置C:\Program Files\ZeroMQ 3.2.4\lib,我从libzmq-v90-mt_3_2_4.lib复制了libzmq-v90-mt_3_2_4.dllC:\Program Files\ZeroMQ 3.2.4\bin到messenger构建目录~\python-matlab-bridge\messenger\src。 我还将zmq.hzmq_utils.h放入该目录,但截至目前我不确定它们是否真的有必要。

然后,在Windows SDK 7.1 Command Prompt中,我进入messenger\src目录并发出

mex messenger.c libzmq-v90-mt-3_2_4.lib -O -output messenger

获取messenger.mexw64。 最后,在~\python-matlab-bridge directory中,使用MinGW,我只是

python setup.py install

这会自动将构建的包放入我的Anaconda\Lib\site-packages以及鸡蛋信息。在Anaconda\Lib\site-packages\pymatbridge\matlab中,messenger.mexw64之前构建了~\python-matlab-bridge\messenger\src。 我还复制了Anaconda\Lib\site-packages\pymatbridge\matlab所有其他.dll s,.lib.h s以获得良好衡量标准。 现在在iPython 2.7 console或iPython Notebook中,我可以

%load_ext pymatbridge

成功。

答案 1 :(得分:3)

当我使用Visual Studio作为我的标准IDE时,我摆弄并获得了一个有效的构建过程。 我用过:

VS 2013
Matlab 2013b x64
Python 3.3 x64
ZeroMQ 4.0.4.

如果您使用不同的版本,请确保在必要时调整路径。

使用Visual Studio(2013)构建messenger

  • 首先使用空C ++项目创建一个新的解决方案。
  • 设置配置,例如64位 释放
  • 打开项目属性并设置以下内容:
  

配置属性 - >一般:

     

目标名称:信使

     

目标扩展名:.mexw64

     

配置类型:动态库(.dll)

     

配置属性 - > VC ++目录 - >包括目录:

     

MATLABPATH \ extern \ include

     

ZEROMQ PATH \ include

     

配置属性 - > VC ++目录 - >图书馆目录:

     

MATLABPATH \ extern \ lib \ win64 \ microsoft

     

ZEROMQ PATH \ lib

     

配置属性 - >链接器 - >输入 - >其他依赖关系:

     

libmx.lib; libmex.lib; libmat.lib; libzmq-V120-MT-4_0_4.dll

     

配置属性 - >链接器 - >命令行 - >其他选项:

     

/出口:mexFunction

  • messenger.c添加为源文件
  • 构建库
  • 将其复制到: PYTHONPATH \ Lib \ site-packages \ pymatbridge \ matlab \

请注意:

由于windows.h中已存在的函数名称,我遇到了一些不兼容的错误。 解决方案是重命名:

  • 初始化
  • 响应
  • 清理

为:

  • initializeMat
  • listenMat
  • respondMat
  • cleanupMat

答案 2 :(得分:1)

其他一些答案有点过时,现在可以更轻松地完成这些工作(在Linux系统上仍然不会那么容易:/)。首先,pymatbridge现在在Windows上包含一个二进制mex,它与libzmq静态链接,所以你不应该为了让它工作而实际编译任何东西。

但是,如果您仍想从源代码编译它,那么对于动态链接库来说,这个过程并不算太糟糕。

1)从网站安装zeromq:http://zeromq.org/distro:microsoft-windows

2)将一个lib / libzmq - * .lib文件重命名为ZeroMQ安装目录中的libzmq.lib

3)将ZeroMQ bin目录添加到路径中。

4)编辑messenger中的messenger / mexw64 / local.cfg文件以指向zeromq安装目录(您需要同时更新ZMQ_INC和ZMQ_LIB)。还要确保MATLAB目录正确。

5)在messenger目录中运行make.py matlab。这应该构建messenger.mexw64

静态链接库在实践中很简单,但由于zeromq(截至目前)没有为Windows安装程序提供静态链接的.lib,因此您需要自己编译。拥有静态.lib后,使用make matlab --static

构建messenger.mexw64