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

Posted

技术标签:

【中文标题】如何在 OS X 上将 Python 的默认版本设置为 3.x? [复制]【英文标题】:How to set Python's default version to 3.x on OS X? [duplicate] 【发布时间】:2013-08-27 20:04:01 【问题描述】:

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

目前:

$ python
    version 2.7.5
$ python3.3
    version 3.3

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

【问题讨论】:

可以使用pyenv管理python的版本。 ***.com/questions/49704364/… 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

但是,您可以在大多数 shell 中为命令设置别名,因为 macOS 中的默认 shell(10.14 及更低版本中的 bash;10.15 中的 zsh)共享类似的语法。你可以把 alias python='python3' 在您的~/.profile 中,然后在您的~/.bash_profile 和/或您的~/.zsh_profile 中输入~/.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 运行时会出现问题,不是吗?【参考方案3】:

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

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

module load python3.3

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

【讨论】:

【参考方案4】:

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

这里是如何从 ~/.bash_profile 中删除引用 - vim ./.bash_profile - 删除引用(又名:export PATH="/Users/bla/anaconda:$PATH") - 保存并退出 - source ./.bash_profile 保存更改

【讨论】:

不会发生【参考方案5】:

可以通过符号链接解决。

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.x.x)、brew python link python(或python@2)。注意,brew 将 python 3 安装为“python3”。【参考方案6】:

我相信大多数登陆这里的人都在使用 ZSH thorugh iterm 或其他任何东西,这会将您带到this answer。

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

【讨论】:

【参考方案7】:

如果您使用的是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)"

【讨论】:

【参考方案8】:

以下对我有用

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

【讨论】:

【参考方案9】:

转到终端类型:

alias python=python3.x

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

【讨论】:

这对我有用,但使用“alias python=python3” 这将为该终端实例临时设置python版本。【参考方案10】:

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

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

【讨论】:

【参考方案11】:

打开 ~/.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【参考方案12】:

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

How to: Macports select python

TL;DR:

sudo port select --set python python27

【讨论】:

【参考方案13】:

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

alias python=/usr/local/bin/python3

【讨论】:

【参考方案14】:

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

运行:

port install python37

安装后,设置默认值:

sudo port select --set python python37

sudo port select --set python3 python37

重启你的 cmd 窗口,完成。

【讨论】:

【参考方案15】:

我也遇到了这个问题,所以我想我应该发布一个更新的答案。请注意,这仅适用于基于 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 中的新符号链接。"谢谢,到目前为止,这是我在所有答案中都缺少的部分。【参考方案16】:

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

还有一个好处是 You Don't Wanna Touch The Default Python On Mac.

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

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

【讨论】:

【参考方案17】:

The RIGHT and WRONG way to set Python 3 as default on a Mac

本文作者讨论了三种设置默认python的方法:

    什么不能做。 我们可以做什么(但也不应该)。 我们应该做什么!

所有这些方法都有效。您决定哪个更好。

【讨论】:

【参考方案18】:
$ sudo ln -s -f $(which python3) $(which python)

完成。

【讨论】:

【参考方案19】:

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

brew switch python 3.X.X

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

这将更新所有系统链接。

更新

对于较新版本的 MAC 使用

brew link python 3.X.X

【讨论】:

不知道为什么你投了反对票。这对我有用!谢谢你提出这个。我赞成你取消反对票;) 在 Catalina (10.15.17) 上,我得到:Error: Calling `brew switch` is disabled! Use `brew link` @-versioned formulae instead. 这对我不起作用 错误:未知命令:切换【参考方案20】:

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

pyenv global 3.8.2

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

pyenv local 2.7.1

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

【讨论】:

【参考方案21】:

在 MacOS 上

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

第 2 步:回家: $光盘

第三步:打开 .bash_profile

$ vi .bash_profile

为 Python 3.8 设置 PATH

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

步骤 4:保存文件。并编译:

$ . .bash_profile

Step-5:检查python版本:

$ python -V

第 6 步:仅此而已。

【讨论】:

【参考方案22】:

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

从你的终端试试这个:

brew install python3

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

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

提示:

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

lrwxr-xr-x 1 用户 admin 24 May 7 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

编码愉快!

【讨论】:

以上是关于如何在 OS X 上将 Python 的默认版本设置为 3.x? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 CentOS 上将 Python3.5.2 设置为默认 Python 版本?

在 OS X 上将扩展属性写入文件

如何在 Windows 上将 Python 3.8 切换到 Python 3.6 作为默认值?

如何在最新的OS X上安装多个版本的Python并同时使用它们?

如何通过为用户提供将其设为默认应用程序的选项,在设备上将应用程序设为默认电话或助理处理程序

如何在Mac OS X上将PDF转换为Microsoft Word