系统自带的scipy和numpy的版本比较低,编译scikit learn出现numpy.dtype size的问题,就在于使用pip命令安装的scipy和numpy是存放在sie-package下边,而自带的scipy和numpy在extra目录下面,但是,诡异的加载路径里,extra的顺序要靠前,因此造成即使更新了最新版的底层软件依然挂掉。
解决方案:
(方案1)更改路径参数
export PYTHONPATH=/Library/Python/2.7/site-packages:/Library/Python/2.7/site-packages/setuptools-5.4.1-py2.7.egg:/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.egg:/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip:/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7:/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin:/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac:/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages:/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python:/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk:/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old:/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload:/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC
优点:不需要自己编译系统库(速度巨慢);
缺点:更改顺序还是会有一些warning打印出来,不过看结果没有问题。
(方案2)自己升级系统的numpy和scipy,
第一步:安装xcode的相关gcc之类的编译库;
第二步:安装gfortran,https://gcc.gnu.org/wiki/GFortranBinaries#MacOS 这里有相关的mac下的版本,选择合适的;
第三步:更新之:
sudo easy_install -U numpy
sudo easy_install -U scipy
优点:一劳永逸
缺点:速度慢,不知道会不会有兼容性问题(毕竟正宗的被我替换了)
(方案3)干掉系统自带的scipy和numpy,使用site-package也就是你自己安装的那个版本。
优点:速度快,省心,不用改环境变量;
缺点:不知道兼容性会不会有问题。