因此,我使用 brew () 在 macOS High Sierra 10.13.6 下安装了 python 3.7.4,brew install python
但遇到了一些问题。
首先,尽管这是小问题,但我想知道这是否会造成影响;当 brew 安装 python 时,它会显示以下内容:
Python has been installed as
/usr/local/bin/python3
Unversioned symlinks `python`, `python-config`, `pip` etc. pointing to
`python3`, `python3-config`, `pip3` etc., respectively, have been installed into
/usr/local/opt/python/libexec/bin
但是,打字pip
没有任何作用。我必须打字pip3
才能让它工作。
跑步pip3 --version
可得:
pip 19.1.1 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)
主要问题是我无法使用我安装的任何软件包。例如,我以前youtube-dl
安装过,但是一旦我将 python 3.7.3 升级到 3.7.4,就会破坏所有内容。pip3
brew upgrade
我可以通过执行以下操作来证明我已经安装了它(为简单起见,其他项目已被删除):
$ ls -l /usr/local/lib/python3.7/site-packages/
drwxr-xr-x 19 root admin 608 Jun 29 00:07 youtube_dl
drwxr-xr-x 10 root admin 320 Jun 29 00:07 youtube_dl-2019.6.27.dist-info
然而打字youtube-dl
却出现了臭名昭著的-bash: youtube-dl: command not found
。
我尝试过多次卸载并重新安装 python,但都无济于事。
以下是我的 PATH 在 .bash_profile 中的样子:
PATH="/usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/Versions/3.7/bin:${PATH}:${HOME}/go/bin"
export PATH
任何有助于实现此项工作的帮助都将不胜感激。
答案1
介绍
请阅读Homebrew 和 Python文档:
可执行文件的组织方式如下,以便 Python 2 和 Python 3 都可以无冲突地安装:
python3
指向 Homebrew 的 Python 3.x(如果已安装)python2
指向 Homebrew 的 Python 2.7.x (如果已安装)python
指向 Homebrew 的 Python 2.7.x(如果已安装),否则指向 macOS 系统 Python。检查brew info python
是否要将 Homebrew 的 3.x 添加python
到您的 PATH。pip3
指向 Homebrew 的 Python 3.xpip
(如果已安装)pip
并pip2
指向 Homebrew 的 Python 2.7.xpip
(如果已安装)
调用哪些二进制文件?
根据以上信息,如果您想pip
从 Homebrew Python 3 安装中使用,请将其调用为pip3
– 更具体地说,/usr/local/bin/pip3
。
如果有/usr/local/bin/pip
,则它将来自 Homebrew Python 2 (legacy)。否则它将是系统 Python 的pip
。
我只能建议从 Homebrew 安装 Python 2 和 3,并使用python
和python3
分别指代 2.7 和 3.x,并且永远不要使用系统 Python。并且永远不要使用sudo
。
允许
您的 Python 软件包是由root
和 而非您的正常用户名安装的。这似乎不对。您是否曾使用sudo
来安装某些东西pip
?如果是,请在以后避免这种情况并尝试修复权限:
sudo chown -R $(whoami) /usr/local/lib/python3.7/site-packages/
故障排除步骤
运行brew doctor
还应该表明您的安装存在问题。
您也可以尝试完全删除 Homebrew Python 安装,然后重新安装它。
小路
不要像问题中所示那样设置你的路径。python3
和pip3
在中/usr/local/bin
,所以只要/usr/local/bin
在你的路径前面,你就很好了:
export PATH="/usr/local/bin/:$PATH"
这应该无论如何都是默认的,所以如果有任何东西覆盖它,请相应地修改你的 shell 初始化脚本。