如何链接home brew python版本并将其设置为默认值

add*_*ons 39 python macos homebrew

我刚刚从MacPorts切换到HomeBrew.在安装了所有必需的XCode版本和其他软件后,我尝试使用自制软件安装python:我认为它已成功安装,但是当我这样做which python时仍然向我显示2.7.3我认为是Mountain Lion附带的版本.

which python
/usr/local/bin/python

python --version
Python 2.7.3
Run Code Online (Sandbox Code Playgroud)

所以我试着再次安装

brew install python --framework --universal
Warning: python-2.7.5 already installed, it's just not linked
Run Code Online (Sandbox Code Playgroud)

但是它说python 2.7.5已经安装而没有链接,我试着这样做 brew link python

这导致我遵循这样的信息,我不知道我应该做什么:

链接/usr/local/Cellar/python/2.7.5 ...警告:无法链接python.取消链接...

Error: Could not symlink file: /usr/local/Cellar/python/2.7.5/bin/smtpd2.py
Target /usr/local/bin/smtpd2.py already exists. You may need to delete it.
To force the link and overwrite all other conflicting files, do:
  brew link --overwrite formula_name

To list all files that would be deleted:
  brew link --overwrite --dry-run formula_name
Run Code Online (Sandbox Code Playgroud)

len*_*ooh 40

安装python3后,brew install python3 我得到错误:

Error: An unexpected error occurred during the `brew link` step
The formula built, but is not symlinked into /usr/local
Permission denied @ dir_s_mkdir - /usr/local/Frameworks
Error: Permission denied @ dir_s_mkdir - /usr/local/Frameworks
Run Code Online (Sandbox Code Playgroud)

输入brew link python3错误后:

Linking /usr/local/Cellar/python/3.6.4_3... Error: Permission denied @ dir_s_mkdir - /usr/local/Frameworks
Run Code Online (Sandbox Code Playgroud)

解决问题:

sudo mkdir -p /usr/local/Frameworks
sudo chown -R $(whoami) /usr/local/*
brew link python3
Run Code Online (Sandbox Code Playgroud)

在此之后,我可以通过输入打开python3 python3

(来自https://github.com/Homebrew/homebrew-core/issues/20985)

  • 你不必`chown -R` /usr/local,仅供参考......在下面发布答案 (2认同)
  • Chaim Eliyah:可能。但是,该代码段来自官方的自制软件存储库。 (2认同)

cam*_*ler 12

对于那些寻找使用brew重新链接版本的人,我发现这个命令很有用:

brew unlink python@3.9 && brew link python@3.10
Run Code Online (Sandbox Code Playgroud)

可能会出现一些错误,例如:

Error: Could not symlink bin/pip3
Target /usr/local/bin/pip3
already exists. You may want to remove it:
  rm '/usr/local/bin/pip3'

To force the link and overwrite all conflicting files:
  brew link --overwrite python@3.10

To list all files that would be deleted:
  brew link --overwrite --dry-run python@3.10
Run Code Online (Sandbox Code Playgroud)

因此,遵循brew建议并运行:

rm '/usr/local/bin/pip3'
brew link --overwrite python@3.10
Run Code Online (Sandbox Code Playgroud)

刚刚为我工作。要检查符号链接是否正常,请运行:ls -l /usr/local/bin/python*,您应该看到类似以下内容:

/usr/local/bin/python3 -> ../Cellar/python@3.10/3.10.2/bin/python3
/usr/local/bin/python3-config -> ../Cellar/python@3.10/3.10.2/bin/python3-config
/usr/local/bin/python3.10 -> ../Cellar/python@3.10/3.10.2/bin/python3.10
/usr/local/bin/python3.10-config -> ../Cellar/python@3.10/3.10.2/bin/python3.10-config

Run Code Online (Sandbox Code Playgroud)


小智 8

如果你用过

brew install python
Run Code Online (Sandbox Code Playgroud)

在'取消联系'之前你得到了

brew info python
/usr/local/Cellar/python/2.7.11

python -V
Python 2.7.10
Run Code Online (Sandbox Code Playgroud)

这样做

brew unlink python && brew link python
Run Code Online (Sandbox Code Playgroud)

并打开一个新的终端shell

python -V
Python 2.7.11
Run Code Online (Sandbox Code Playgroud)


小智 7

在终端中,键入:

brew link python
Run Code Online (Sandbox Code Playgroud)

  • 不,我得到“链接/usr/local/Cellar/python/3.6.4_4 ...错误:权限被拒绝@ dir_s_mkdir-/usr/local/Frameworks/Python.framework” (2认同)

小智 5

我认为您必须精确确定要与以下命令链接的版本brew link python

brew link python 3
Run Code Online (Sandbox Code Playgroud)

它会给你这样的错误:

Linking /usr/local/Cellar/python3/3.5.2... 
Error: Could not symlink bin/2to3-3.5
Target /usr/local/bin/2to3-3.5
already exists. 
Run Code Online (Sandbox Code Playgroud)

您可能要删除它:

rm '/usr/local/bin/2to3-3.5'
Run Code Online (Sandbox Code Playgroud)

要强制链接并覆盖所有冲突文件:

brew link --overwrite python3
Run Code Online (Sandbox Code Playgroud)

列出所有将被删除的文件:

brew link --overwrite --dry-run python3
Run Code Online (Sandbox Code Playgroud)

但是您必须复制/粘贴命令以强制链接,即:

brew link --overwrite python3
Run Code Online (Sandbox Code Playgroud)

我认为您必须安装了版本(较新)。


Cha*_*yah 5

在OS X High Sierra上,我必须这样做:

sudo install -d -o $(whoami) -g admin /usr/local/Frameworks
brew uninstall --ignore-dependencies python
brew install python
python --version # should work, returns 2.7, which is a Python thing (it's weird, but ok)
Run Code Online (Sandbox Code Playgroud)

归功于https://gist.github.com/irazasyed/7732946#gistcomment-2235469

我认为这比递归锁定/ usr / local目录要好,但这可能会解决其他问题;)


小智 2

此答案适用于在 Mac OS X El Capitan 上将 Python 2.7.10 升级到 Python 2.7.11。在终端类型上:

brew unlink python
Run Code Online (Sandbox Code Playgroud)

在终端上输入后

brew install python
Run Code Online (Sandbox Code Playgroud)