brew 安装当前版本不提供的软件版本记录
由于一些原因,需要用到Python和一些相关的库,于是晚上抽空把自己本本上新建一个环境。而之前由于看到3.7.0的发布,一句
brew upgrade python
更新到 Python 3.7.0。
整个过程如下:在工作区建了一个Python的虚拟环境,3.x的,安装依赖吧,结果在执行 pip install scikit-learn
的时候,报了一堆错!!!Python版本,是3.x的啊,之前还好好地啊!!第一反应是是不是缺了什么东西,错误信息里这个找不到那个找不到的。然后查错误信息时发现碰到这个问题的几乎是用的Python3.7。接着在scikit-learn 的 issues中发现了pip install fails (compile error) with Python 3.7rc1,算了,还是退回到上一个版本吧。接下来一不小心手贱把之前的安装记录也全部给干掉了(emmmmm,就当是清理环境了),重新安装吧。。。。。
方式
brew search
通过brew search <name>
来查找是否存在所需要的软件和相应的版本。通常存在多个版本的时候会以<name>@<version>
的形式来提供之前版本的相应的软件,但是很不巧,Python3.6.x的并未单独提供。
brew switch
其实这个做法是需要旧的版本存在的情况下才能够生效。但是很不巧,手贱把旧的版本也都删除了。brew switch
的具体操作参考这篇文章:brew管理node的版本。
釜底抽薪的做法
到这里就要先说一下 brew 的结构了,安装好的 brew 目录为 /usr/local/Homebrew/
,对应管理工具安装的路径为/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core
,其中管理python安装的是Formula/python.rb
,这是一个通过git管理的工程,所以可以将其回退到之前的提交并临时关闭更新来获取所需要的python版本。接下来就是去查找对应的提交并回退,接下来执行以下指令来临时关闭更新,并安装python,安装所需的python版本即可。
# 设置不自动 update
export HOMEBREW_NO_AUTO_UPDATE=1
brew install python