最近yvivid安装WinPython-32bit-3.4.4.1,
安装后,运行spyder运行时出现如下错误,
Traceback (most recent call last):
File "D:WinPython-3.4.4.1python-3.4.4lib
unpy.py", line 170, in _run_module_as_main
"__main__", mod_spec)
File "D:WinPython-3.4.4.1python-3.4.4lib
unpy.py", line 85, in _run_code
exec(code, run_globals)
File "D:WinPython-3.4.4.1python-3.4.4libsite-packagesspyderlibstart_app.py", line 134, in <module>
main()
File "D:WinPython-3.4.4.1python-3.4.4libsite-packagesspyderlibstart_app.py", line 118, in main
from spyderlib import spyder
File "D:WinPython-3.4.4.1python-3.4.4libsite-packagesspyderlibspyder.py", line 141, in <module>
from spyderlib.config.ipython import IPYTHON_QT_INSTALLED
File "D:WinPython-3.4.4.1python-3.4.4libsite-packagesspyderlibconfigipython.py", line 56, in <module>
IPYTHON_QT_INSTALLED = is_qtconsole_installed()
File "D:WinPython-3.4.4.1python-3.4.4libsite-packagesspyderlibconfigipython.py", line 40, in is_qtconsole_installed
pyzmq_installed = programs.is_module_installed('zmq', version=ZMQ_REQVER)
File "D:WinPython-3.4.4.1python-3.4.4libsite-packagesspyderlibutilsprograms.py", line 321, in is_module_installed
actver = get_module_version(module_name)
File "D:WinPython-3.4.4.1python-3.4.4libsite-packagesspyderlibutilsprograms.py", line 265, in get_module_version
mod = __import__(module_name)
File "D:WinPython-3.4.4.1python-3.4.4libsite-packageszmq\__init__.py", line 47, in <module>
_libzmq = ctypes.cdll.LoadLibrary(bundled[0])
File "D:WinPython-3.4.4.1python-3.4.4libctypes\__init__.py", line 429, in LoadLibrary
return self._dlltype(name)
File "D:WinPython-3.4.4.1python-3.4.4libctypes\__init__.py", line 351, in __init__
self._handle = _dlopen(self._name, mode)
OSError: [WinError 127] 找不到指定的程序。
从网络搜索相关信息,发现相关文章如下:
https://sourceforge.net/p/winpython/tickets/117/
https://github.com/winpython/winpython/issues/17
在XP上安装WinPython最新版本 http://www.cnblogs.com/bsmagic/p/4378370.html
相关问题提示为 pyzmq不支持WinXP的缘故,
为了确定这个问题,尝试在 IDLE 中运行 import zmq,出现如下错误,
>>> import zmq
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
import zmq
File "D:WinPython-3.4.4.1python-3.4.4libsite-packageszmq\__init__.py", line 47, in <module>
_libzmq = ctypes.cdll.LoadLibrary(bundled[0])
File "D:WinPython-3.4.4.1python-3.4.4libctypes\__init__.py", line 429, in LoadLibrary
return self._dlltype(name)
File "D:WinPython-3.4.4.1python-3.4.4libctypes\__init__.py", line 351, in __init__
self._handle = _dlopen(self._name, mode)
OSError: [WinError 127] 找不到指定的程序。
因此,yvivid判定是pyzmq的问题。(另外也尝试了 import ctype是正常的,没有报错)
不过之前的方案都是找到旧版本覆盖。
yvivid暂不确定是否新的版本包冲突,所以尝试从 pypi.python.org下载文件版,重新安装尝试,
pyzmq-14.7.0-cp34-none-win32.whl(PyPI上找到的旧版本)
pyzmq-15.2.0-cp34-none-win32.whl(PyPI上找到的最新版本,和 winpython自带版本一致)
使用pip重新安装后,spyder就可以用了。上面两个版本均能支持spyder。
初步判断,应该是 winpython 中使用pyzmq包对 WinXP支持较差(预计为路径识别 or 调用库不匹配等因素)。
但PyPI放出的 pyzmq对 WinXP仍有较好支持。
用 PyPI的 pyzmq 更可靠一些,没有必要使用旧库覆盖等方式。
【原创文档,引用请声明出处,yvivid】