ChatGPT解决这个技术问题 Extra ChatGPT

如何在 OS X 上将 Python 的默认版本设置为 3.x? [复制]

这个问题在这里已经有了答案:如何更改默认 Python 版本? (19 个回答) 去年关闭。

我正在运行 Mountain Lion,基本的默认 Python 版本是 2.7。我下载了 Python 3.3 并想将其设置为默认值。

目前:

$ python
    version 2.7.5
$ python3.3
    version 3.3

如何设置它以便每次运行 $ python 时都会打开 3.3?

您可以使用 pyenv 管理 python 的版本。

r
rustyMagnet

在系统范围内更改默认 python 可执行文件的版本可能会破坏一些依赖于 python2 的应用程序。

但是,您可以在大多数 shell 中为命令设置别名,因为 macOS 中的默认 shell(10.14 及更低版本中的 bash;10.15 中的 zsh)共享类似的语法。您可以将 alias python='python3' 放入您的 ~/.profile,然后将 ~/.profile 放入您的 ~/.bash_profile 和/或您的~/.zsh_profile,如下所示:

[ -e ~/.profile ] && . ~/.profile

这样,您的别名将跨 shell 工作。

有了这个,python 命令现在调用 python3。如果您想偶尔调用“原始”python(指的是 python2),您可以使用 command python,这将保持别名不变,并在所有 shell 中工作。

如果您更频繁地启动解释器(我愿意),您总是可以创建更多别名来添加,即:

alias 2='python2'
alias 3='python3'

提示:对于脚本,不要使用 shebang,例如:

#!/usr/bin/env python

利用:

#!/usr/bin/env python3

这样,系统将使用 python3 来运行 python 可执行文件。


这不应该放在 ~/.bash_profile 而不是 ~/.bash_aliases 中吗?
alias python=python3 然后在我的终端上运行 python 对我来说不起作用。尝试同时保存 ~/.bash_aliases 和 ~/.bash_profile。
@Haymaker87 在编辑 ~/.bash_profile 文件后运行 source ~/.bash_profile
您可以对 pip 执行相同操作:alias pip='pip3.6'
@surfer190 使用 sudo 运行时会导致问题,不是吗?
A
Almog Cohen

您可以通过符号链接解决它。

unlink /usr/local/bin/python
ln -s /usr/local/bin/python3.3 /usr/local/bin/python

这是正确的答案(别名很好,但只能通过 bash 访问,这限制了您可以调用的位置)。但是,我会使用 unlink 而不是 rm 来删除符号链接(如果您不小心在 rm 上添加了尾部斜杠,您可能会得到一些不好的结果)。或者,您可以执行 ln -s -f ... 覆盖当前符号链接。
它对期望 pythonpython2.7 的脚本有任何影响吗?
macOS:unlink: /usr/bin/python: Operation not permitted
@MarksCode 尝试只运行第二个原始行(即 ln -s... with /local/)。
对于 Mac OS 用户,您应该使用 brew 命令自动生成符号链接。例如:brew unlink python、brew switch python 3.x.x_x(或2.xx)、brew python link python(或python@2)。请注意,brew 将 python 3 安装为“python3”。
A
Ananta Chandra Das

打开 ~/.bash_profile 文件。

vi ~/.bash_profile

然后把别名如下:

alias python='python3'

现在保存文件,然后运行 ~/.bash_profile 文件。

source ~/.bash_profile

恭喜!!!现在,您可以通过键入 python 来使用 python3。

python --version

Python 3.7.3


如果您像我一样发现同样的问题适用于 pip(即 pip --version 仍然是 2.7.x),那么您需要对 pip3 执行相同的步骤。 vi ~/.bash_profile, alias pip='pip3', source ~/.bash_profile, pip --version
每次重新打开终端时,我真的需要source ~/.bash_profile吗?一旦我关闭并再次打开终端,它就会恢复为 python2。
它对我有用,tkx
@RickyAguilar 我也是。我当前的 conda 基础是 3.8,我想将默认的 pythton 更改为 3.10。我已更改 ~/.bash_profile,注释掉现有的并添加 export PATH="/Applications/anaconda3/envs/py3.10/bin:$PATH",它在 source 之后起作用。但是,一旦我关闭终端并重新打开,结果发现基础仍然是 py3.8。我需要再次source。这是不合理的。因为我可以conda activate py3.10。你有没有找到另一种方法来解决这个问题?
如果您已经安装了 Visual Studio 代码,它将很容易使用。 code ~/.bash_profile 而不是使用。 vi ~/.bash_profile
s
sknight

我也遇到了这个问题,所以我想我应该发布一个更新的答案。请注意,这仅适用于基于 Mac 的设置(我没有在 Windows 或任何版本的 Linux 上尝试过)。最简单的方法是通过 Brew 安装 Python。如果您没有安装 brew,则需要先安装。安装后,在终端执行以下操作:

brew install python

这将安装 Python 3。安装后,运行:

ls -l /usr/local/bin/python*

您将看到 brew 创建到其 Python 安装的所有链接。它看起来像这样:

lrwxr-xr-x  1 username  admin  36 Oct  1 13:35 /usr/local/bin/python3@ -> ../Cellar/python/3.7.4_1/bin/python3
lrwxr-xr-x  1 username  admin  43 Oct  1 13:35 /usr/local/bin/python3-config@ -> ../Cellar/python/3.7.4_1/bin/python3-config
lrwxr-xr-x  1 username  admin  38 Oct  1 13:35 /usr/local/bin/python3.7@ -> ../Cellar/python/3.7.4_1/bin/python3.7
lrwxr-xr-x  1 username  admin  45 Oct  1 13:35 /usr/local/bin/python3.7-config@ -> ../Cellar/python/3.7.4_1/bin/python3.7-config
lrwxr-xr-x  1 username  admin  39 Oct  1 13:35 /usr/local/bin/python3.7m@ -> ../Cellar/python/3.7.4_1/bin/python3.7m
lrwxr-xr-x  1 username  admin  46 Oct  1 13:35 /usr/local/bin/python3.7m-config@ -> ../Cellar/python/3.7.4_1/bin/python3.7m-config

此示例中的第一行显示 python3 符号链接。要将其设置为默认的 python 符号链接,请运行以下命令:

ln -s -f /usr/local/bin/python3 /usr/local/bin/python

您必须重新加载当前的终端 shell 才能使用该 shell 中的新符号链接。运行这个命令来重新加载你的 shell:

exec $SHELL -l

你现在都准备好了。现在,您可以执行以下操作:

which python

它应该显示:

/usr/local/bin/python

所有新打开的 shell 会话将(应该)自动使用新的符号链接。要对此进行测试,请打开一个新的终端 shell 并运行以下命令:

python --version

效果很好 (Reference)
“您必须重新加载当前的终端 shell 才能使用该 shell 中的新符号链接。”谢谢,这是迄今为止我从所有答案中遗漏的部分。
这也对我有用。我想补充几点 - 1. 我使用的是 Mac M1,所以我必须运行 arch -arm64 brew install python & 2. pip 不适合我,所以我必须运行 sudo ln -s -f /usr/local/bin/pip3 /usr/local/bin/pip 然后 pip 工作。
@sohammondal 谢谢。感谢您的意见。
A
Aditya

转到终端类型:

alias python=python3.x

这会将默认 python 设置为 python3.x


这对我有用,但使用“别名 python=python3”
这将为该终端实例临时设置 python 版本。
t
toadead

这对我有用。我添加了别名并重新启动了我的终端:

alias python=/usr/local/bin/python3

M
Mayank Jain

以下对我有用

cd /usr/local/bin
mv python python.old
ln -s python3 python

u
user3071284

转到“应用程序”,进入“Python”文件夹,应该有一个名为“更新 Shell Profile.command”或类似的 bash 脚本。运行该脚本,它应该这样做。

更新:看起来您不应该更新它:how to change default python version?


M
Mr. Crowley

我相信大多数登陆这里的人都通过 iterm 或其他方式使用 ZSH,这会将您带到 this answer

您必须改为在 ~/.zshrc 中添加/修改您的命令。


o
oori
$ sudo ln -s -f $(which python3) $(which python)

完毕。


ln: /usr/bin/python: 不允许操作
S
Sachitha Dilshan

Mac 用户只需要在终端上运行以下代码

brew switch python 3.X.X

3.xx 应该是新的 python 版本。

这将更新所有系统链接。

更新

对于较新版本的 MAC 使用

brew link python 3.X.X

不知道你为什么投了反对票。这对我有用!谢谢你提出这个。我赞成你取消反对票;)
在 Catalina (10.15.17) 上,我得到:Error: Calling `brew switch` is disabled! Use `brew link` @-versioned formulae instead.
这对我不起作用
错误:未知命令:switch
对我来说,它看起来像这样:brew link python@3.9。感谢提示!
j
jacob

将 python 别名为 python3 的建议将导致设置 python 版本的虚拟环境出现问题(例如:pyenv)。使用 pyenv,您可以像这样全局设置版本:

pyenv global 3.8.2

然后在任何特定项目中,您可以创建一个 .python-version 文件,其中包含 python 版本:

pyenv local 2.7.1

在我看来,这是在系统上管理多个 python 版本的最佳方式。


d
doubleOK

我认为当您安装 python 时,它会将导出路径语句放入您的 ~/.bash_profile 文件中。因此,如果您不打算再使用 Python 2,您可以从那里删除该语句。如上所述的别名也是一种很好的方法。

以下是如何从 ~/.bash_profile - vim ./.bash_profile - 删除引用(AKA 类似于:export PATH="/Users/bla/anaconda:$PATH") - 保存并退出 - source ./ .bash_profile 保存更改


它不会发生
A
ArunDhwaj IIITH

在 MacOS 上

第 1 步:通过以下方式将 python 升级到最新版本:$ brew upgrade python

步骤 2:回家:$ cd

第三步:打开 .bash_profile

$ vi .bash_profile

为 Python 3.8 设置 PATH

PATH="/Library/Frameworks/Python.framework/Versions/3.8/bin:${PATH}" 导出路径

第四步:保存文件。并通过以下方式编译它:

$ . .bash_profile

Step-5:检查python版本:

$蟒蛇-V

第6步:就是这样。


V
Vorticity

我不确定这在 OS X 上是否可用,但在 linux 上我会使用 module 命令。 See here

正确设置模块文件,然后将类似这样的内容添加到您的 rc 文件(例如 ~/.bashrc):

module load python3.3

这将使您在登录时根据需要切换路径,而不会影响任何系统默认值。


C
ChamCham

对我来说,解决方案是使用 PyCharm 并将默认 python 版本设置为我需要使用的版本。

安装 PyCharm 并转到新项目的文件 ==> 首选项,然后为项目选择所需的解释器,在本例中为 python 3.3


H
HoldOffHunger

如果您使用 macports,则不需要使用别名或环境变量,只需使用 macports 已经提供的方法,此问答对此进行了解释:

How to: Macports select python

TL;博士:

sudo port select --set python python27

V
Vikas Pandey

这是我的 exp 中最简单的方法。 (如果您的 Mac 上安装了 brew)。

从你的终端试试这个:

brew install python3

然后在您的终端上运行以下命令:

ls -l /usr/local/bin/python*

小费:

**(记下终端上显示的 python 版本 3.8 或 3.9。这将在下一步中需要)。例如,在我的情况下是:

lrwxr-xr-x 1 用户管理员 5 月 7 日 24 日 14:33 /usr/local/bin/python -> /usr/local/bin/python3.9

现在在您的终端上运行以下命令:

ln -s -f /usr/local/bin/python3.9 /usr/local/bin/python

(其中 3.9 是使用上一个命令在终端上显示的版本)

完成 !

要测试您的默认 python 版本:

关闭当前终端或启动一个新终端并运行以下命令:

python --version

快乐编码!


E
Esir Kings

如果您使用的是 virtualenvwrapper,您可以使用 which virtualenvwrapper.sh 找到它,然后使用 vim 或任何其他编辑器打开它,然后更改以下内容

# Locate the global Python where virtualenvwrapper is installed.
if [ "${VIRTUALENVWRAPPER_PYTHON:-}" = "" ]
then
    VIRTUALENVWRAPPER_PYTHON="$(command \which python)"
fi

将行 VIRTUALENVWRAPPER_PYTHON="$(command \which python)" 更改为 VIRTUALENVWRAPPER_PYTHON="$(command \which python3)"


I
Istiaque Hossain

如果您使用的是 macports,则有一种更简单的方法:

跑:

port install python37

安装后,设置默认值:

sudo port select --set python python37

sudo port select --set python3 python37

重启你的cmd窗口,完成。


T
Tor_Gash

嗯……有点老了。但仍然值得一个好的答案。

好的是你不想在 Mac 上触摸默认的 Python。

通过 Homebrew 或其他任何方式安装您需要的任何 Python 版本并在 virtualenv 中使用它。 Virtualenv 通常被认为是类似垃圾的东西,但它仍然比在系统范围内更改 python 版本(macOS 可能会保护自己免受此类操作)或用户范围内、bash 范围内......任何方式更好。忘记默认的 Python。使用像 venv 这样的 Playground 是你的操作系统最值得感谢的地方。

例如,许多现代 Linux 发行版摆脱了开箱即用的 Python2,只在系统中留下 Python3。但是每次您尝试使用 python2 作为依赖项安装旧的东西时...希望您理解我的意思。一个好的开发人员不在乎。优秀的开发人员使用他们想要的 python 版本创建干净的 Playground。