主要说一下在 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()
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于