Instalación de pymatbridge en Windows

En la versión 0.3 de pymatbridge, se agregó una dependencia adicional para ZMQ. Para instalar esta versión, es posible que deba comstackr una extensión de messenger mex que se vincule con un dll de zeromq. Sin embargo, esto resulta ser bastante difícil de hacer en algunos casos.

¿Alguien tiene ejemplos de historias de éxito al instalar pymatbridge desde el origen en una máquina que ejecuta Windows?

Algunas de las otras respuestas están un poco desactualizadas, y esto puede hacerse mucho más fácilmente ahora (aún no será tan fácil en un sistema Linux: /). En primer lugar, pymatbridge ahora incluye un mex binario en Windows que está estáticamente vinculado a libzmq, por lo que no debería tener que comstackr nada para que funcione.

Sin embargo, si aún desea comstackrlo desde la fuente, el proceso no es tan malo para una biblioteca enlazada dinámicamente.

1) Instale zeromq desde el sitio web: http://zeromq.org/distro:microsoft-windows

2) Cambie el nombre de uno de los archivos lib / libzmq – *. Lib a libzmq.lib en el directorio de instalación de ZeroMQ

3) Agregue el directorio bin de ZeroMQ a su ruta.

4) Edite el archivo messenger / mexw64 / local.cfg en messenger para que apunte al directorio de instalación de zeromq (deberá actualizar tanto ZMQ_INC como ZMQ_LIB). También asegúrese de que el directorio de MATLAB sea correcto.

5) Ejecute make.py matlab en el directorio de messenger. Esto debería construir messenger.mexw64

En la práctica, una biblioteca enlazada estáticamente es simple, pero como zeromq (a partir de ahora) no proporciona una .lib para la vinculación estática con el instalador de Windows, deberá comstackrlo usted mismo. Después de tener una .lib estática, compile messenger.mexw64 con make matlab --static

Aquí está mi configuración y las instrucciones de construcción; disculpas por la verbosidad – esto es de una reseña que hice para mi cuaderno de laboratorio.

Presupuesto:

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

Primero instalé MS Visual C++ & SDK 7.1 . La posible razón para que la instalación falle bastante pronto es la presencia de otras versiones de comstackdores de Visual C ++ y / o SDK; antes de instalar con éxito el SDK 7.1, tuve que desinstalar algunos de ellos.

Primero, usando el Windows SDK 7.1 Command Prompt ,

 mex -setup 

y seleccionó el comstackdor recién instalado. En mi caso

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

Elegí elegir el número 1 . A continuación, descargué e instalé un ZMQ 3.2.4 64 bits ZMQ 3.2.4 y, desde la ubicación de instalación de ZMQ 3.2.4, C:\Program Files\ZeroMQ 3.2.4\lib , copié libzmq-v90-mt_3_2_4.lib y libzmq-v90-mt_3_2_4.dll desde C:\Program Files\ZeroMQ 3.2.4\bin al directorio de comstackción de messenger, ~\python-matlab-bridge\messenger\src . También puse zmq.h y zmq_utils.h en ese directorio, pero a partir de ahora no estoy seguro de que sean realmente necesarios.

Luego, en el Windows SDK 7.1 Command Prompt , ingresé en el directorio messenger\src y emití

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

para obtener un messenger.mexw64 . Finalmente, en el ~\python-matlab-bridge directory , usando MinGW , acabo de

 python setup.py install 

Esto colocó automáticamente el paquete integrado en mis paquetes Anaconda\Lib\site-packages junto con una información detallada. En Anaconda\Lib\site-packages\pymatbridge\matlab existe el messenger.mexw64 que se creó anteriormente, desde ~\python-matlab-bridge\messenger\src . También copié a Anaconda\Lib\site-packages\pymatbridge\matlab todos los demás .dll s, .lib s y .h s por si Anaconda\Lib\site-packages\pymatbridge\matlab . Ahora, en la iPython 2.7 console , o en un portátil iPython, puedo

 %load_ext pymatbridge 

exitosamente.

Cuando uso Visual Studio como mi IDE estándar, jugué un poco y obtuve un proceso de comstackción funcional. Solía:

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

Si utiliza versiones diferentes, asegúrese de ajustar la ruta donde sea necesario.

Construye messenger usando Visual Studio (2013)

  • Primero cree una nueva solución con un proyecto de C ++ vacío.
  • Configure la configuración, por ejemplo, la versión x64
  • Abre las Propiedades del proyecto y configura lo siguiente:

Propiedades de configuración -> General:

Nombre del objective: mensajero

Extensión de destino: .mexw64

Tipo de configuración: Biblioteca dinámica (.dll)

Propiedades de configuración -> Directorios de VC ++ -> Incluir directorios:

MATLABPATH \ extern \ include

ZEROMQ PATH \ include

Propiedades de configuración -> Directorios de VC ++ -> Directorios de bibliotecas:

MATLABPATH \ extern \ lib \ win64 \ microsoft

ZEROMQ PATH \ lib

Propiedades de configuración -> Vinculador -> Entrada -> Dependencias adicionales:

libmx.lib; libmex.lib; libmat.lib; libzmq-v120-mt-4_0_4.dll

Propiedades de configuración -> Vinculador -> Línea de comandos -> Opciones adicionales:

/ export: mexFunction

  • Añadir messenger.c como archivo fuente
  • Construir la biblioteca
  • Cópielo en: PYTHONPATH \ Lib \ site-packages \ pymatbridge \ matlab \

Tenga en cuenta:

Obtuve una causa de error incompatible por los nombres de funciones ya presentes en windows.h. La solución fue renombrar:

  • inicializar
  • escucha
  • responder
  • limpiar

a:

  • initializeMat
  • listenMat
  • respondMat
  • limpiezaMat