我使用命令pip
升级了pip3 install --upgrade pip
;然后,在终端窗口中打印以下内容:
DEPRECATION: Python 3.5 reached the end of its life on September 13th,
2020. Please upgrade your Python as Python 3.5 is no longer maintained. pip 21.0 will drop support for Python 3.5 in January 2021.
pip 21.0 will remove support for this functionality.
在线搜索有关在Mac上升级python的正确方法,这使我有两个来源(1)和(2)。第二个来源提到了修改.profile
和bash脚本;尽管这些堆栈交换论坛(例如this和that)上的类似问题有所帮助,但这些都是我难以理解的事情。但是,我认为使用第一来源的建议,我已经确定了未来的潜在问题(我读过虚拟venv可能是一个不错的解决方案)。具体来说,
$ which python
/usr/bin/python
$ which python3
/Library/Frameworks/Python.framework/Versions/3.5/bin/python3
$ brew info python
python@3.8: stable 3.8.5 (bottled)
Interpreted, interactive, object-oriented programming language
https://www.python.org/
/usr/local/Cellar/python@3.8/3.8.5 (4,331 files, 66.8MB)
Poured from bottle on 2020-09-23 at 04:16:21
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/python@3.8.rb
License: Python-2.0
==> Dependencies
Build: pkg-config ✔
Required: gdbm ✔, openssl@1.1 ✔, readline ✔, sqlite ✔, xz ✔
==> 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@3.8/libexec/bin
You can install Python packages with
pip3 install <package>
They will install into the site-package directory
/usr/local/lib/python3.8/site-packages
See: https://docs.brew.sh/Homebrew-and-Python
==> Analytics
install: 435,972 (30 days), 1,606,776 (90 days), 3,198,770 (365 days)
install-on-request: 158,335 (30 days), 466,841 (90 days), 519,965 (365 days)
build-error: 0 (30 days)
我认为这意味着我在Mac上安装了python 2,python 3.5和python 3.8。我尝试使用以下命令的多个版本(即python
,python3
,python3.8
等)升级python版本:
$ pip3 install --upgrade python
ERROR: Could not find a version that satisfies the requirement python (from versions: none)
ERROR: No matching distribution found for python
我已经安装了python 3.8,但是我显然正在运行3.5;如何升级python版本?而我该如何“清理这些烂摊子”?如果需要的话,我正在运行macOS High Sierra 10.13.6,我唯一喜欢/使用的文本编辑器是Atom(请不要提供有关vim的建议)。
编辑#1:
跟随the steps from this post之后,在TextEdit中打开了以下内容。
# Setting PATH for Python 3.5
# The original version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.5/bin:${PATH}"
export PATH
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
我注意到它在顶部显示Python 3.5
。是否用PATH="/Library/Frameworks/Python.framework/Versions/3.5/bin:${PATH}"
覆盖给定的路径PATH=/usr/local/bin
?我想运行python 3.8;这会做我想要的吗?
编辑#2:
如编辑后的答案中所建议,在终端中运行grep PATH $HOME/.*
在终端窗口中输出以下内容:
grep: /Users/username/.bash_sessions: Is a directory
grep: /Users/username/.cache: Is a directory
grep: /Users/username/.config: Is a directory
grep: /Users/username/.cups: Is a directory
grep: /Users/username/.git: Is a directory
grep: /Users/username/.idlerc: Is a directory
grep: /Users/username/.lightkurve-cache: Is a directory
grep: /Users/username/.local: Is a directory
grep: /Users/username/.matplotlib: Is a directory
grep: /Users/username/.npm: Is a directory
grep: /Users/username/.nvm: Is a directory
grep: /Users/username/.oracle_jre_usage: Is a directory
grep: /Users/username/.ssh: Is a directory
grep: /Users/username/.subversion: Is a directory
grep: /Users/username/.vnc: Is a directory
因此,我搜索了包含python 3.5的目录。如果我Frameworks
在ls
中时未列出/Users/username/Library/
,所以我在其他地方搜索。但这让我担心,因为我看到了PATH="/Library/Frameworks/Python.framework/Versions/3.5/bin:${PATH}"
(来自编辑#1)。
$ pwd
/Users/username
$ cd .local/
$ ls
share
$ cd share
$ ls
virtualenvs
$ cd virtualenvs
$ ls
PyCodes-_a3khG54
$ cd PyCodes-_a3khG54
$ ls
bin include lib src
目录src
为空; include
包含python3.5m
,而lib
包含python3.5
。
$ cd bin
$ ls
activate f2py python
activate.csh f2py3 python-config
activate.fish f2py3.5 python3
activate_this.py pip python3.5
easy_install pip3 wheel
easy_install-3.5 pip3.5
这里没有可以编辑的文件吗?
答案 0 :(得分:0)
您显示的输出:
brew info python
告诉你答案!
如果我释义,它说:
如果要通过键入
python3
和pip3
运行 Python 3.8 和 pip ,则需要先将/usr/local/bin
在您的PATH
上。相反,如果您想通过键入python
或pip
来运行它们,即没有版本,则需要将/usr/local/opt/python@3.8/libexec/bin
首先放在PATH
上。
要在哪里更改PATH
并不是一件容易的事,因为设置位置有很多可能性。最好的选择可能是查看HOME目录中的所有“ dotfiles” ,因此:
grep PATH $HOME/.*
然后,您需要打开最可能出现的文件,并在设置最后一个位置之后添加它,例如:
export PATH=/usr/local/bin:$PATH
要真正激活它,最简单的方法可能是启动一个新终端并运行:
echo $PATH
如果看起来正确,请使用旧的PATH关闭终端,否则您会感到困惑。如果它看起来不正确或引起错误,请立即关闭新的“终端”窗口,然后在原始终端中重试编辑。
如果您想知道在键入python
和pip
时实际上正在运行什么,请运行:
type python
type pip
如果您想知道在键入python3
和pip3
时实际上正在运行什么,请运行:
type python3
type pip3
您可以像下面这样解释最后几个type
命令的输出:
如果它们的开头附近包含local
一词,可能是/usr/local/XXX
,则可能由 homebrew 或您自己编译或安装的东西提供,< / p>
如果它们以/Library
开头或包含单词Frameworks
,则它们可能是由Apple提供的,并且是最近发布的,
如果它们以/usr/bin
开头,但没有单词local
,则可能是Apple提供的较旧的二进制文件,
如果它说您的命令是“ aliased” ,则表示您的“ dotfiles” 中某处有alias python="something crazy"
这样的命令(请参阅以上)。就我个人而言,我将其删除,因为它仅增加了另一层间接性和混乱性……YMMV。
切勿删除或更改Apple提供的任何内容,否则将来的 macOS 升级可能会失败。
因此,希望我们已经确定您需要使用python
和pip
,或者使用python3
和pip3
并且它们应该匹配,即当您在您使用的 Python 解释器可以使用的位置安装要安装的软件包。因此,“匹配” 安装的示例如下所示:
type python3
python3 is /usr/local/bin/python3
python3 -V
Python 3.8.5
pip3 -V
pip 20.1.1 from /usr/local/lib/python3.8/site-packages/pip (python 3.8)
type pip3
pip3 is hashed (/usr/local/bin/pip3)
请注意,我的两个二进制文件名称中都包含local
,所以它们都来自自制软件,并且 Python 版本与{{ 1}}命令,因此可以确保将其安装在 Python 解释器的正确位置。
为什么很难说在哪里编辑pip3 -V
?答案是,这取决于很多事情。它取决于您的shell,因此您可能会看到运行PATH
的建议,但这仅告诉您可以使用echo $SHELL
找到的默认shell,而不是当前的shell。但是您的登录shell可能是ps -o comm= $$
,并且您可能已经在bash个人资料中执行了bash
。或者,您可以使用fish
或iTerm2
或Terminal
,并且可能已经在该终端程序的“首选项” 中更改了shell。