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

Mar*_*cus 286 python macos install python-3.x

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

目前:

$ python
    version 2.7.5
$ python3.3
    version 3.3
Run Code Online (Sandbox Code Playgroud)

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

San*_*mar 537

在系统范围内更改默认的python版本会破坏一些依赖于python2的应用程序.

您可以在大多数shell中对命令进行别名,默认情况下Mac OS X使用bash,如果您也将其放入~/.bash_profile:

alias python='python3'
Run Code Online (Sandbox Code Playgroud)

python命令现在指的是python3.如果你想要原始的python(指的是python2),你可以转义别名,即do\python会启动python2而不保留别名)

如果你经常启动口译员(我这样做),最好是:

alias 2='python2'
alias 3='python3'
Run Code Online (Sandbox Code Playgroud)

提示:而不是:

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

使用:

#!/usr/bin/env python
Run Code Online (Sandbox Code Playgroud)

系统将使用python3来运行python 可执行文件.

  • @编辑后Haymaker87来看`源〜/ .bash_profile``〜/ .bash_profile`文件. (40认同)
  • 你可以为pip做同样的事情:`alias pip ='pip3.6'` (15认同)
  • 在我的终端上使用`alias python = python3`然后在osx el capitan上运行`python`对我来说不起作用.试过保存它〜/ .bash_aliases和〜/ .bash_profile. (3认同)
  • 这甚至可以在〜/ .zshrc文件中使用 (3认同)
  • 这不应该放在〜/ .bash_profile而不是〜/ .bash_aliases吗? (2认同)

Shi*_*Kim 117

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

unlink /usr/local/bin/python
ln -s /usr/local/bin/python3.3 /usr/local/bin/python
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的答案(别名很好,但只能通过bash访问,这限制了你可以调用的地方).但是,我会使用`unlink`而不是`rm`来删除符号链接(如果你不小心在`rm`上添加一个尾部斜杠,你可能会有一些不好的结果).或者,你可以做`ln -s -f ...`,它应该覆盖当前的符号链接. (19认同)
  • macOS:`unlink:/ usr/bin/python:不允许操作 (13认同)
  • 对于期望`python`为`python2.7`的脚本有什么影响吗? (3认同)
  • @ChadBefus谢谢你的回复.我同意你的意见.unlink比rm更安全. (2认同)
  • 你可以反过来重新建立python2x作为默认版本吗?所以如果你把python与python3链接起来,我建议你可以取消链接python3和ln -s python2. (2认同)
  • @MarksCode尝试仅运行第二个原始行(即ln -s ... * with * / local /`)。 (2认同)
  • 对于Mac OS用户,应使用brew命令自动建立符号链接。例如:brew unlink python,brew开关python 3.x.x_x(或2.xx),brew python链接python(或python @ 2)。注意,brew将python 3安装为“ python3”。 (2认同)
  • 最近 Mac 操作系统的*真正*主要问题是它没有给出有关 UNIX 命令和 root 概念的$#%^:`>> sudo unlink /usr/bin/python``密码:``unlink:/usr /bin/python: 不允许操作` `>> sudo -su root` `>> whoami` `root` `>> unlink /usr/bin/python` `unlink: /usr/bin/python: 不允许操作` (2认同)
  • 我必须关闭终端并打开一个新终端才能使其在 macOS 中正常运行 (2认同)

skn*_*ght 38

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

brew install python
Run Code Online (Sandbox Code Playgroud)

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

ls -l /usr/local/bin/python*
Run Code Online (Sandbox Code Playgroud)

您将看到 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
Run Code Online (Sandbox Code Playgroud)

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

ln -s -f /usr/local/bin/python3 /usr/local/bin/python
Run Code Online (Sandbox Code Playgroud)

你现在都准备好了。但要确保,请执行以下操作:

运行此命令以重新加载您的 shell。

exec $SHELL -l
Run Code Online (Sandbox Code Playgroud)

设置后,您可以执行以下操作:

exec $SHELL -l
Run Code Online (Sandbox Code Playgroud)

它应该显示:

which python
Run Code Online (Sandbox Code Playgroud)

您必须重新加载当前的终端 shell 才能使用该 shell 中的新符号链接,但是,所有新打开的 shell 会话都(应该)自动使用它。要对此进行测试,请打开一个新的终端 shell 并运行以下命令:

/usr/local/bin/python
Run Code Online (Sandbox Code Playgroud)

  • 效果很好([参考](https://dev.to/malwarebo/how-to-set-python3-as-a-default-python-version-on-mac-4jjf)) (4认同)
  • “您必须重新加载当前的终端 shell,才能使用该 shell 中的新符号链接。” 谢谢,这是我迄今为止所有答案中所缺少的部分。 (2认同)
  • 这对我也有用。我想补充的一些事情 - 1.我使用的是 Mac M1,所以我必须运行 `arch -arm64 brew install python` & 2. pip 不适合我,所以我必须运行 `sudo ln - s -f /usr/local/bin/pip3 /usr/local/bin/pip` 然后 pip 工作了。 (2认同)

Ana*_*Das 21

打开〜/ .bash_profile文件。

vi ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

然后按如下所示放置别名:

alias python='python3'
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

的Python 3.7.3

  • 每次重新打开终端时,我真的需要“source ~/.bash_profile”吗?一旦我关闭并再次打开终端,它就会恢复为 python2。 (7认同)
  • 如果您像我一样发现同样的问题适用于 pip(即 pip --version 仍然是 2.7.x),那么您需要对 pip3 执行相同的步骤。vi ~/.bash_profile, 别名 pip='pip3', source ~/.bash_profile, pip --version (2认同)

toa*_*ead 15

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

alias python=/usr/local/bin/python3
Run Code Online (Sandbox Code Playgroud)


May*_*ain 11

以下为我工作

cd /usr/local/bin
mv python python.old
ln -s python3 python
Run Code Online (Sandbox Code Playgroud)


小智 10

转到终端类型:

alias python=python3.x
Run Code Online (Sandbox Code Playgroud)

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

  • 这将临时设置该终端实例的 python 版本。 (3认同)
  • 这对我有用,但使用“alias python=python3” (2认同)

Sac*_*han 10

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

brew switch python 3.X.X
Run Code Online (Sandbox Code Playgroud)

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

这将更新所有系统链接。

更新

对于较新版本的 MAC 使用

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

  • 这对我不起作用 (8认同)
  • 对我来说,它看起来像这样:`brew link python@3.9`。感谢您的提示! (4认同)
  • 在 Catalina (10.15.17) 上,我得到:`错误:调用 \`brew switch\` 被禁用!请改用“brew link”@-versioned 公式。 (2认同)

CT *_*Zhu 9

转到"应用程序",输入"Python"文件夹,应该有一个名为"Update Shell Profile.command"的bash脚本或类似文件.运行该脚本,它应该这样做.

更新:看起来你不应该更新它:如何更改默认的python版本?


jac*_*cob 6

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

pyenv global 3.8.2
Run Code Online (Sandbox Code Playgroud)

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

pyenv local 2.7.1
Run Code Online (Sandbox Code Playgroud)

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


Mr.*_*ley 5

我相信大多数登陆这里的人都在使用ZSH thorugh iterm或其他工具,这为您带来了答案

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


oor*_*ori 5

$ sudo ln -s -f $(which python3) $(which python)
Run Code Online (Sandbox Code Playgroud)

完毕。

  • ln: /usr/bin/python: 不允许操作 (2认同)