无法在 MacOS 中将 Python 从 3.6 更新到 3.7

jon*_*les 6 homebrew updates python-3.x

我已经尝试了几个命令在 MacOS 上的自制软件中将 python 3.6 更新到 python 3.7。

我试过(作为管理员用户):

brew update
Run Code Online (Sandbox Code Playgroud)

这声称安装了python 3.7

brew upgrade

brew link python3    

brew link --overwrite python3

brew unlink python && brew link python

brew switch python 3.7.0

brew switch python 3.7.5
Cleaning /usr/local/Cellar/python/3.7.5
24 links created for /usr/local/Cellar/python/3.7.5
Run Code Online (Sandbox Code Playgroud)

经过所有这些尝试,我仍然得到这个:python3 --version Python 3.6.5

有人可以帮我切换到python3吗?

Gin*_*pin 5

根据评论

which python3 -> /Library/Frameworks/Python.framework/Versions/3.6/bin/python3

python3与 Homebrew 安装/管理的不同。
(也许它来自MacPython .pkg 安装程序?)。

首先,通过 Homebrew 安装它:

$ brew uninstall python3   # let's start from scratch
$ brew install python3
Run Code Online (Sandbox Code Playgroud)

检查它的安装位置:

$ brew info python3
python: stable 3.7.5 (bottled), HEAD
...
==> Caveats
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

If you need Homebrew's Python 2.7 run
  brew install python@2

You can install Python packages with
  pip3 install <package>
They will install into the site-package directory
  /usr/local/lib/python3.7/site-packages
...
Run Code Online (Sandbox Code Playgroud)

请注意,Homebrew 将其安装在/usr/local/bin/python3并且站点包存储在相应的/usr/local/lib/python3.7/site-packages

接下来,您需要确保您的操作系统python3在同一路径上查找。

$ echo $PATH
/usr/local/sbin:/usr/local/opt/openssl/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
Run Code Online (Sandbox Code Playgroud)

如果您在那里没有看到/usr/local/bin,请将其PATH添加到您的~/.bash_profile 中

export PATH=/usr/local/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

然后source更新~/.bash_profile(或重新启动您的终端)。

$ source ~/.bash_profile
$ echo $PATH
Run Code Online (Sandbox Code Playgroud)

评论中,如果您PATH显示/Library/Frameworks/Python.framework/Versions/3.6/bin/python3,您必须通过PATH.bash_profile 中显式设置完整来删除它,或者确保它出现Homebrew 的 Python 之后/usr/local/bin

最后,检查python3现在是否正确:

$ which python3
/usr/local/bin/python
$ ls -l /usr/local/bin/python
lrwxr-xr-x  1 gino  admin  38 Oct  4 17:35 /usr/local/bin/python3 -> ../Cellar/python/3.7.5/bin/python3
$ python3 -V
Python3.7.5
Run Code Online (Sandbox Code Playgroud)

请注意,这python3应该是python3Homebrew 安装在../Cellar目录中的。

我可以轻松更改为自制软件安装,还是会丢失所有已安装的软件包?

我建议过在自制的重新安装包python3站点包文件夹。如果你为你的 Python 项目维护了一个requirements.txt文件,它就像这样简单:

$ python3 -m pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)


jon*_*les 4

最终的解决方案是Python 3.7已经安装并且可以使用命令访问python3.7