主要说一下在 win64bit + cpython34 下的安装方法。(linux 下有太多教程了)
##依赖关系
sklearn 依赖于 numpy 和 scipy
scipy 依赖于 numpy + mkl
网上有很多依赖关系的版本,亲测 sklearn 只需要这些。
##建议不要这么做
建议不要直接使用 pip install numpy / scipy (sklearn 官方也不建议这么弄), 否则最后所有 3 个安装完成后可能遇到 import numpy 和 scipy 都没有问题,但是 import sklearn 可能会出现
ImportError: cannot import name __check_build
stackoverflow 上有太多相似的问题了,但是解决方案也是五花八门。
##win 用户的解决方案
win 用户的解决方案是使用 Unofficial Windows Binaries for Python Extension Packages
- 下载对应版本的 numpy+mkl 和 scipy (cp34-win_amd64)的 whl 文件。
- 使用
pip install [文件路径]
进行安装。 - sklearn 直接用 pip 下载安装就行
pip install -U scikit-learn
done!
##其他
注意! 版本匹配很重要 win 和 py 的版本要匹配,包和前两的版本也必须匹配。
当然,numpy 和 scipy 也可以用别人打包好的 exe 进行安装,这时候你可能会遇到类似 “找不到 python3.4 注册表”的问题。问题很明显了,解决方案也有几个可选:
- 手动添加注册表(不建议,麻烦且容易出错)
- 重新安装 python,安装的时候选择“仅为该用户”
- 运行以下脚本(网上大都是 py2 的,这里贴的是 py3 的版本)
--register.py--
import sys from winreg import * # tweak as necessary version = sys.version[:3] installpath = sys.prefix regpath = "SOFTWARE\\Python\\Pythoncore\\%s\\" % (version) installkey = "InstallPath" pythonkey = "PythonPath" pythonpath = "%s;%s\\Lib\\;%s\\DLLs\\" % ( installpath, installpath, installpath ) def RegisterPy(): try: reg = OpenKey(HKEY_CURRENT_USER, regpath) except EnvironmentError as e: try: reg = CreateKey(HKEY_CURRENT_USER, regpath) SetValue(reg, installkey, REG_SZ, installpath) SetValue(reg, pythonkey, REG_SZ, pythonpath) CloseKey(reg) except: print ("*** Unable to register!") return print ("--- Python", version, "is now registered!") return if (QueryValue(reg, installkey) == installpath and QueryValue(reg, pythonkey) == pythonpath): CloseKey(reg) print ("=== Python", version, "is already registered!") return CloseKey(reg) print ("*** Unable to register!") print ("*** You probably have another Python installation!") RegisterPy()
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于