[IPython-dev] zmq/pyzmq Version Incompatibilities
MinRK
benjaminrk at gmail.com
Thu May 5 18:09:37 EDT 2011
Hello,
Thanks for the thorough reports!
Are you using VS-2010? I understand there are various issues when you
use VS-2010 (MSVC 10) to compile a library, but 2008 (MSVC 9, and the
one used for all official Pythons so far) for Python extensions. We
have one known issue caused by this, and it is the errno mismatch you
see with 2.1.4+2.1.4, but it could be the cause of many of your
problems.
Note that libzmq has 3 repos right now on GitHub. zeromq2-1 can be
considered 'maint', zeromq2-2 is the current dev, and libzmq (version
3.0) is the API-breaking "Don't worry about changing everything"
(think Python 3) development repo.
I should also note that I have no build issues, and 100% of tests
passing on my Windows VM for pzmq-master with: zeromq-2.1.4, 2.1.6,
2.1dev (2.1.7), and 2.2dev (2.2.0).
My VM is Windows 7 x86_64, official Python 2.7.1 from MSI, MSVC 9 (VS
2008 express).
On Thu, May 5, 2011 at 09:18, Dave Hirschfeld <dave.hirschfeld at gmail.com> wrote:
> Not sure if this is an appropriate forum for pyzmq problems but since it's
> a dependency for the parallel stuff I thought I'd post here.
>
> This is more of a heads-up in case people weren't aware of possible problems
> running off the latest github checkouts. Running stock zmq 2.1.4 with the pyzmq
> 2.1.4 branch works except for the (benign?) error:
This error is Benign *unless* you are trying to handle ZMQ errors
yourself. This errno mismatch only seems to occur when libzmq is
built with VS-2010. It has no effect on IPython's use of libzmq.
>
> ======================================================================
> FAIL: test_create (zmq.tests.test_socket.TestSocket)
> ----------------------------------------------------------------------
> Traceback (most recent call last):
> File "C:\dev\bin\Python26\Lib\site-packages\zmq\tests\test_socket.py",
> line 47, in test_create
> self.assertRaisesErrno(zmq.EPROTONOSUPPORT, s.bind, 'ftl://a')
> File "C:\dev\bin\Python26\Lib\site-packages\zmq\tests\__init__.py",
> line 104, in assertRaisesErrno
> got '%s'" % (zmq.ZMQError(errno), zmq.ZMQError(e.errno)))
> AssertionError: wrong error raised,
> expected 'Unknown error' got 'Protocol not supported'
>
> ----------------------------------------------------------------------
>
>
> * With trunk pyzmq and trunk zmq I get the following error:
See above for multiply defined 'trunk' for zeromq. We do not yet have
a branch that tracks 3.0 development (libzmq on github)
>
> C:\dev\src\pyzmq>python setup.py configure --zmq=C:\dev\src\zeromq-trunk
> running configure
> ******************************************
> Configure: Autodetecting ZMQ settings...
> Custom ZMQ dir: C:\dev\src\zeromq-trunk
> c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\BIN\cl.exe /c /nologo /Ox
> /MD /W3 /GS- /DNDEBUG -IC:\dev\src\zeromq-trunk\include -Izmq\utils -Izmq\core
> -Izmq\devices /Tcdetect\vers.c /Fodetect\vers.obj
> vers.c
> c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\BIN\link.exe /nologo
> /INCREMENTAL:NO /LIBPATH:C:\dev\src\zeromq-trunk\lib libzmq.lib detect\vers.obj
> /OUT:detect\vers.exe /MANIFESTFILE:detect\vers.exe.manifest
> C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\mt.exe -nologo -manifest
> detect\vers.exe.manifest -outputresource:detect\vers.exe;1
> ZMQ version detected: 3.0.0
> ******************************************
>
> C:\dev\src\pyzmq>python setup.py build
> running build
> running build_py
> ...
> running build_ext
> building 'zmq.core.constants' extension
> creating build\temp.win32-2.6
> creating build\temp.win32-2.6\Release
> creating build\temp.win32-2.6\Release\zmq
> creating build\temp.win32-2.6\Release\zmq\core
> c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\BIN\cl.exe /c /nologo /Ox
> /MD /W3 /GS- /DNDEBUG -IC:\dev\src\zeromq-trunk\include -Izmq\utils -Izmq\core
> -Izmq\devices -IC:\dev\bin\Python26\include -IC:\dev\bin\Python26\PC
> /Tczmq\core\constants.c /Fobuild\temp.win32-2.6\Release\zmq\core\constants.obj
> constants.c
> zmq\core\constants.c(704) :
> error C2065: 'ZMQ_NOBLOCK' : undeclared identifier
> zmq\core\constants.c(824) :
> error C2065: 'ZMQ_UPSTREAM' : undeclared identifier
> zmq\core\constants.c(836) :
> error C2065: 'ZMQ_DOWNSTREAM' : undeclared identifier
> zmq\core\constants.c(916) :
> error C2065: 'ZMQ_HWM' : undeclared identifier
> zmq\core\constants.c(928) :
> error C2065: 'ZMQ_SWAP' : undeclared identifier
> zmq\core\constants.c(1012) :
> error C2065: 'ZMQ_MCAST_LOOP' : undeclared identifier
> zmq\core\constants.c(1108) :
> error C2065: 'ZMQ_STREAMER' : undeclared identifier
> zmq\core\constants.c(1120) :
> error C2065: 'ZMQ_FORWARDER' : undeclared identifier
> zmq\core\constants.c(1132) :
> error C2065: 'ZMQ_QUEUE' : undeclared identifier
> error: command '"c:\Program Files (x86)\Microsoft Visual Studio
> 9.0\VC\BIN\cl.exe"' failed with exit status 2
>
> C:\dev\src\pyzmq>
>
>
> * With trunk pyzmq and 2.1.6 zmq, pyzmq compiles but the tests segfault:
Permission denied is not a segfault. I cannot reproduce this, pyzmq
master passes all tests with 2.1.6. It's possible this is due to
using MSVC10 with libzmq, and MSVC 9 with pyzmq. If your checkout was
before yesterday, this could have simply been a port conflict in the
test (recently fixed).
>
> C:\dev\bin\Python26\Lib\site-packages\zmq\tests>python
> Python 2.6.5 (r265:79096, Mar 19 2010, 21:48:26)
> [MSC v.1500 32 bit (Intel)] on win32
> Type "help", "copyright", "credits" or "license" for more information.
> ->>> import zmq
> ->>> zmq.pyzmq_version()
> '2.1dev'
> ->>> zmq.zmq_version()
> '2.1.6'
> ->>>
>
> C:\dev\bin\Python26\Lib\site-packages\zmq\tests>nosetests -v
> test_fail_init (zmq.tests.test_context.TestContext) ... ok
> test_init (zmq.tests.test_context.TestContext) ... ok
> test_instance (zmq.tests.test_context.TestContext) ... ok
> test_term (zmq.tests.test_context.TestContext) ... ok
> test_term_hang (zmq.tests.test_context.TestContext) ... ok
> test_device_attributes (zmq.tests.test_device.TestDevice) ... ok
> test_device_types (zmq.tests.test_device.TestDevice) ... ok
> test_single_socket_forwarder_bind (zmq.tests.test_device.TestDevice) ...
> Assertion failed: Permission denied (..\..\..\src\err.cpp:228)
>
> * With trunk pyzmq and 2.1.4 zmq pyzmq won't import:
>
> ->>> import zmq
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> File "C:\dev\bin\Python26\lib\site-packages\zmq\__init__.py",
> line 35, in <module>
> from zmq import core, devices
> File "C:\dev\bin\Python26\lib\site-packages\zmq\core\__init__.py",
> line 26, in <module>
> from zmq.core import (constants, error, message, context,
> ImportError: DLL load failed: The specified procedure could not be found.
Do you have a different libzmq.dll on your PATH? Did you make sure
pyzmq was clean when you rebuilt it against each new libzmq?
I can run pyzmq master with libzmq 2.1.4 (built with either VS 2010 or
2008), with no problems aside from the errno mismatch on VS2010).
I hope we can resolve these, because pzymq is known to work on Windows
in all of these combinations (excluding libzmq-3.0).
-MinRK
> ->>>
>
> HTH,
> Dave
>
> _______________________________________________
> IPython-dev mailing list
> IPython-dev at scipy.org
> http://mail.scipy.org/mailman/listinfo/ipython-dev
>
More information about the IPython-dev
mailing list