首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >您需要在brew开关之前/之后运行brew unlink / brew链接吗?

您需要在brew开关之前/之后运行brew unlink / brew链接吗?
EN

Stack Overflow用户
提问于 2020-11-14 11:39:50
回答 1查看 3.3K关注 0票数 3

您需要在brew unlink / brew link之前/之后运行brew switch

根据此链接,https://docs.brew.sh/Tips-N'-Tricks#activate-a-previously-installed-version-of-a-formula brew switch将激活以前安装的公式版本。

看起来我已经安装了一些“系统”python (它安装在/usr/bin/python3下),它不是用brew安装的,如果我执行brew unlink python@3.9brew unlink python@3.7,我可以看到它。

代码语言:javascript
复制
python -V
Python 3.7.3

/usr/bin/python3 -V
Python 3.7.3

which python3
/usr/bin/python3

然后切换到python@3.9:

代码语言:javascript
复制
brew switch python@3.9 3.9.0_1
python -V
Python 3.9.0

然后切换到python@3.7:

代码语言:javascript
复制
brew switch python@3.7 3.7.9
python -V
Python 3.9.0

但它仍然向我展示Python3.9.0,ls -l /usr/local/bin | grep python3也向我展示python3.9。

在每次brew切换测试之前,我还尝试解除所有brew python包的链接:

代码语言:javascript
复制
brew unlink python@3.7 && brew unlink python@3.9
brew switch python@3.7 3.7.9
python -V
Python 3.7.3


brew unlink python@3.7 && brew unlink python@3.9
brew switch python@3.9 3.9.0_1
python -V
Python 3.9.0

因此,出于某种原因,它会自动将python@3.9链接到brew交换机上,而不用于python@3.7,为什么呢?brew switch中是否有brew unlink / brew link,还是应该手动执行?

我可以只做brew unlink / brew link来切换python版本吗?

更新:

新版本的brew似乎没有switch

代码语言:javascript
复制
Error: Calling `brew switch` is disabled! Use `brew link` @-versioned formulae instead.

brew --version
Homebrew 2.7.7
Homebrew/homebrew-core (git revision 918f0; last commit 2021-02-04)
Homebrew/homebrew-cask (git revision 2b83c; last commit 2021-02-04)

现在应该是这样的:

代码语言:javascript
复制
brew unlink python@3.7 && brew unlink python@3.9
brew link python@3.7
python -V
Python 3.7.9
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-10 20:37:45

brew switch不再是brew命令。

代码语言:javascript
复制
$ brew --version                                                                    
Homebrew 3.0.0
Homebrew/homebrew-core (git revision 8d644; last commit 2021-02-10)

$ brew switch mariadb@10.3                                                  
Error: Unknown command: switch

您在问题中提到的小贴士和技巧页面也删除了对brew switch的任何提及。

安装公式的早期版本 安装某些公式的特定版本所支持的方法是查看是否有可用的版本公式(例如gcc@7)。如果您要寻找的版本不可用,请考虑使用brew提取液。

或者,在brew switch中没有提到man brew

因此,您的问题似乎已经由本地维护人员在上游解决了。

请注意,brew switch自制2.6.0以来就不再受欢迎了。

==更新==

以python@3.7和python@3.9为例。我们首先要检查brew info python@3.7brew info python@3.9的输出。我们看到python@3.7是桶-只

代码语言:javascript
复制
python@3.7 is keg-only, which means it was not symlinked into /usr/local,
because this is an alternate version of another formula.

这不是python@3.9的情况,因为它现在是python公式的别名。这意味着安装python@3.9会自动运行brew link python@3.9,而安装python@3.7不会运行brew link python@3.7

然后,要列出哪些文件将与python@3.9链接,可以运行brew link --dry-run python@3.9

代码语言:javascript
复制
Would link:
/usr/local/bin/2to3
/usr/local/bin/2to3-3.9
/usr/local/bin/easy_install-3.9
/usr/local/bin/idle3
/usr/local/bin/idle3.9
/usr/local/bin/pip3
/usr/local/bin/pip3.9
/usr/local/bin/pydoc3
/usr/local/bin/pydoc3.9
/usr/local/bin/python3
/usr/local/bin/python3-config
/usr/local/bin/python3.9
/usr/local/bin/python3.9-config
/usr/local/bin/wheel3
/usr/local/share/man/man1/python3.1
/usr/local/share/man/man1/python3.9.1
/usr/local/lib/pkgconfig/python-3.9-embed.pc
/usr/local/lib/pkgconfig/python-3.9.pc
/usr/local/lib/pkgconfig/python3-embed.pc
/usr/local/lib/pkgconfig/python3.pc
/usr/local/Frameworks/Python.framework/Headers
/usr/local/Frameworks/Python.framework/Python
/usr/local/Frameworks/Python.framework/Resources
/usr/local/Frameworks/Python.framework/Versions/3.9
/usr/local/Frameworks/Python.framework/Versions/Current

要列出哪些文件将与python@3.7链接,请运行brew link --dry-run python@3.7

代码语言:javascript
复制
Would link:
/usr/local/bin/2to3
/usr/local/bin/2to3-3.7
/usr/local/bin/easy_install-3.7
/usr/local/bin/idle3
/usr/local/bin/idle3.7
/usr/local/bin/pip3
/usr/local/bin/pip3.7
/usr/local/bin/pydoc3
/usr/local/bin/pydoc3.7
/usr/local/bin/python3
/usr/local/bin/python3-config
/usr/local/bin/python3.7
/usr/local/bin/python3.7-config
/usr/local/bin/python3.7m
/usr/local/bin/python3.7m-config
/usr/local/bin/pyvenv
/usr/local/bin/pyvenv-3.7
/usr/local/bin/wheel3
/usr/local/share/man/man1/python3.1
/usr/local/share/man/man1/python3.7.1
/usr/local/lib/pkgconfig/python-3.7.pc
/usr/local/lib/pkgconfig/python-3.7m.pc
/usr/local/lib/pkgconfig/python3.pc
/usr/local/Frameworks/Python.framework/Headers
/usr/local/Frameworks/Python.framework/Python
/usr/local/Frameworks/Python.framework/Resources
/usr/local/Frameworks/Python.framework/Versions/3.7
/usr/local/Frameworks/Python.framework/Versions/Current

因此,要回答您的问题,在python@3.7和python@3.9之间切换的一种方法是使用brew linkbrew unlink,是的,如果您有兼容python@3.7的脚本,而不是python@3.9,反之亦然。

还有另一种方法可以同时使用不同版本的python。这将在brew link --dry-run python@3.7输出的末尾进行解释。

代码语言:javascript
复制
If you need to have this software first in your PATH instead consider running:
  echo 'export PATH="/usr/local/opt/python@3.7/bin:$PATH"' >> ~/.zshrc

对于需要python@3.7的脚本,可以设置:

代码语言:javascript
复制
 export PATH="/usr/local/opt/python@3.7/bin

对于需要python@3.9的脚本,可以设置:

代码语言:javascript
复制
 export PATH="/usr/local/opt/python@3.9/bin

希望这能有所帮助。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64833482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档