ivanov/vim-ipython — Issue #21: Cannot load zmq DLL on Windows 7 (64bit) with gvim/python (32bit)
Author: edouardp
Created: 2012-01-26 03:01:39+00:00
State: open

I am having a similar problem to other people here. In fact I think it is more or less issue 80, although that issue is closed.

I am running:

python 2.7.2 (http://python.org/ftp/python/2.7.2/python-2.7.2.msi)
ipython 0.12 (from http://archive.ipython.org/release/0.12/ipython-0.12.win32-setup.exe)
pyzmq 2.1.11 (http://cloud.github.com/downloads/zeromq/pyzmq/pyzmq-2.1.11.win32-py2.7.msi)
gvim 3.7.46 (ftp://ftp.vim.org/pub/vim/pc/gvim73_46.exe)

(and a few others like pyreadline, setuptools etc, but I don't believe they are relevant to the problem)

My OS is 64bit Windows 7 Enterprise SP1

I get the error doing the following in gvim:

:so C:\Python27\share\doc\ipython\examples\vim\ipy.vim
:IPythonClipboard

Traceback (most recent call last):
File "", line 1, in
File "", line 39, in km_from_string
File "C:\Python27\lib\site-packages\IPython\zmq\blockingkernelmanager.py", line 25, in
from .kernelmanager import (KernelManager, SubSocketChannel, HBSocketChannel
File "C:\Python27\lib\site-packages\IPython\zmq\kernelmanager.py", line 29, in
import zmq
File "C:\Python27\lib\site-packages\zmq\__init__.py", line 35, in
from zmq.utils import initthreads @ initialize threads
ImportError: DLL load failed: The specified module could not be found

If I run C:\Python27\python.exe I can type:

import zmq
from zmq.utils import initthreads

without any error.

Having tried to trace things a little further, I've notied that

C:\Python27\Lib\site-packages\zmq\utils\initthreads.pyd

show an error in DependancyWalker:

MSVCR90.DLL was not found

Checking C:\Windows\SysWOW64\python27.dll in DependancyWalker shows that it
does have a successful reference to MSVCR90.DLL at the following location:

c:\windows\winsxs\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6161_none_50934f2ebcb7eb57\MSVCR90.DLL

C:\Python27\python.exe also has a successful reference to MSVCR90.DLL
in DependancyWalker (same value):

c:\windows\winsxs\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6161_none_50934f2ebcb7eb57\MSVCR90.DLL

However if I load gvim.exe in DependancyWalker, I find that it no reference
to MSVCR90.DLL at all - it simply doesn't link against it.

This leads my to believe that it is the MSVCR90.DLL dependancy that is the
problem on the machine I'm using, and that it is satisifed by python.exe
itself, and so everything works when you test it in python, but is
not present in gvim.exe, and so when the initthreads.pyd library gets
loaded, it encounters the "DLL load failed" error.

Grepping the interwebs for similar problems, I came across:

http://code.google.com/p/pyodbc/issues/detail?id=214

which looks to me (and I know very little about WOW or manifests etc) like
it might be describing roughly the same problem.