最近yvivid安裝WinPython-32bit-3.4.4.1,
安裝后,運行spyder運行時出現如下錯誤,
Traceback (most recent call last):
File "D:\WinPython-3.4.4.1\python-3.4.4\lib\runpy.py", line 170, in _run_module_as_main
"__main__", mod_spec)
File "D:\WinPython-3.4.4.1\python-3.4.4\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "D:\WinPython-3.4.4.1\python-3.4.4\lib\site-packages\spyderlib\start_app.py", line 134, in <module>
main()
File "D:\WinPython-3.4.4.1\python-3.4.4\lib\site-packages\spyderlib\start_app.py", line 118, in main
from spyderlib import spyder
File "D:\WinPython-3.4.4.1\python-3.4.4\lib\site-packages\spyderlib\spyder.py", line 141, in <module>
from spyderlib.config.ipython import IPYTHON_QT_INSTALLED
File "D:\WinPython-3.4.4.1\python-3.4.4\lib\site-packages\spyderlib\config\ipython.py", line 56, in <module>
IPYTHON_QT_INSTALLED = is_qtconsole_installed()
File "D:\WinPython-3.4.4.1\python-3.4.4\lib\site-packages\spyderlib\config\ipython.py", line 40, in is_qtconsole_installed
pyzmq_installed = programs.is_module_installed('zmq', version=ZMQ_REQVER)
File "D:\WinPython-3.4.4.1\python-3.4.4\lib\site-packages\spyderlib\utils\programs.py", line 321, in is_module_installed
actver = get_module_version(module_name)
File "D:\WinPython-3.4.4.1\python-3.4.4\lib\site-packages\spyderlib\utils\programs.py", line 265, in get_module_version
mod = __import__(module_name)
File "D:\WinPython-3.4.4.1\python-3.4.4\lib\site-packages\zmq\__init__.py", line 47, in <module>
_libzmq = ctypes.cdll.LoadLibrary(bundled[0])
File "D:\WinPython-3.4.4.1\python-3.4.4\lib\ctypes\__init__.py", line 429, in LoadLibrary
return self._dlltype(name)
File "D:\WinPython-3.4.4.1\python-3.4.4\lib\ctypes\__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.1\python-3.4.4\lib\site-packages\zmq\__init__.py", line 47, in <module>
_libzmq = ctypes.cdll.LoadLibrary(bundled[0])
File "D:\WinPython-3.4.4.1\python-3.4.4\lib\ctypes\__init__.py", line 429, in LoadLibrary
return self._dlltype(name)
File "D:\WinPython-3.4.4.1\python-3.4.4\lib\ctypes\__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】
