如何更改默认的 Python 版本?

我在 Mac 中安装了 Python 3.2。在我运行 /Applications/Python 3.2/Update Shell Profile.command/应用程序/Python 3.2/更新 Shell Profile.command之后,令人困惑的是,当我在终端键入 巨蟒 V时,它显示的是 Python 2.6.1

如何更改默认的 Python 版本?

738273 次浏览

[2021年更新]

(不管你是使用 Mac、 Linux 还是 Windows:)

如果您对如何启动最新版本的 python 感到困惑,那么在大多数平台上,python3会让您的 python2安装保持完整的 (由于上述兼容性原因); 因此您可以使用 python3命令启动 python3。

历史上..。

变数命名原则是,通常大多数脚本都会显式地调用 python2或 python3。

尽管从技术上讲,python3真的甚至不能保证次要版本之间的向后兼容性,但它破坏了向后兼容性。当时,调用“ python”的程序期望使用 python2(当时是主版本)。极其老旧的系统可能有期望 python = python2的程序和脚本,更改这些程序和脚本将破坏这些程序和脚本。

在编写这个答案的时候,由于保持了对旧脚本的兼容性,OP 不应该改变这一点。

大约2021年。

如今,在 python2-> python3转换多年之后,大多数软件都明确地引用 python2或 python3(至少在 Linux 上)。例如,它们可能调用 #!/usr/bin/env python2#!/usr/bin/env python3。这使得 例如(python-is-python3-package)释放了 python 命令,可以将其设置为用户默认值,但它实际上取决于操作系统。

关于发行版应该如何处理 python命令的处方在2011年作为 PEP 394——类 Unix 系统上的“ python”命令撰写。最近一次更新是在2019年6月。

基本上,如果您正在编写一个库,您应该指定可以使用的 python 版本(2或3,或者在特定情况下更细粒度)。否则,作为一个最终用户,您可以根据自己的个人用途随意地重命名它(尽管您的操作系统或发行版可能不会让这变得容易)。

壳牌化名:

但是,您可以在您的 shell 中创建一个自定义别名。您这样做的方式取决于 shell,但是也许您可以执行 alias py=python3,并将其放在您的 shell 启动文件中。这只能在本地计算机上工作(应该是这样的) ,而且与仅仅输入相比有些不必要(除非您不断地调用该命令)。

困惑的用户不应该尝试创建别名或虚拟环境或类似的使 python执行 python3的环境; 这是糟糕的形式。现在这是可以接受的,但 PEP 394建议鼓励用户使用 虚拟世界代替。

不同的3. * 版本,或2. * 版本:

在极不可能的情况下,如果有人用两个 python3版本(比如3.1和3.2)来回答这个问题,并且您对自己安装了两个 python 版本感到困惑,这可能是因为您已经完成了手动安装和/或手动安装。你可以使用你的操作系统的标准包/程序安装/卸载/管理工具来帮助跟踪事情,或许(除非你正在做的开发工作令人惊讶地受到一些向后不兼容的小版本之间的变化的影响)删除旧版本(或者做 make uninstall如果你手动安装)。如果您需要两个版本,那么重新配置您的 $PATH变量,使您想要的“默认”版本放在前面; 或者如果您正在使用大多数 Linux 发行版,那么您正在寻找的命令是 sudo update-alternatives。确保您运行的任何需要访问旧版本的程序都可以被它们的调用环境或 shell 正确地调用(通过在该环境中设置 var PATH)。

关于 $PATH 的一点

旁白: 详细介绍一下 PATH: 通常选择程序的方式是通过 PATH(Linux 和 Mac 上的 echo $PATH)环境变量。你总是可以运行一个完整路径的程序,比如 /usr/bin/🔳 some args,或者 cd /usr/bin然后 ./🔳 some args(例如,用我上面提到的‘ echo’程序替换空白) ,但是如果没有 PATH env 变量,输入 🔳 some args就没有意义了,因为它声明了我们可以隐式地搜索然后执行文件的目录(如果 /usr/bin不在 PATH中,那么它就会说 🔳: command not found)。第一个目录中的第一个匹配命令是执行的命令(Linux 和 Mac 上的 echo $PATH0命令将告诉您这是哪个子路径)。通常它是(例如在 Linux 上,但在 Mac 上类似)类似于 echo $PATH1的东西,它是一个到最终版本的其他符号链接的符号链接,例如:

% echo $PATH
/usr/sbin:/usr/local/bin:/usr/sbin:usr/local/bin:/usr/bin:/bin


% which python
/usr/bin/python
% which python2
/usr/bin/python2
% ls -l /usr/bin/python
lrwxrwxrwx 1 root root 7 Mar  4  2019 /usr/bin/python -> python2*
% ls -l /usr/bin/python2
lrwxrwxrwx 1 root root 9 Mar  4  2019 /usr/bin/python2 -> python2.7*
% ls -l /usr/bin/python2.7
-rwxr-xr-x 1 root root 3689352 Oct 10  2019 /usr/bin/python2.7*


% which python3
/usr/bin/python3
% ls -l /usr/bin/python3
lrwxrwxrwx 1 root root 9 Mar 26  2019 /usr/bin/python3 -> python3.7*
% ls -l /usr/bin/python3.7
-rwxr-xr-x 2 root root 4877888 Apr  2  2019 /usr/bin/python3.7*


% ls -l /usr/bin/python*
lrwxrwxrwx 1 root root       7 Mar  4  2019 /usr/bin/python -> python2*
lrwxrwxrwx 1 root root       9 Mar  4  2019 /usr/bin/python2 -> python2.7*
-rwxr-xr-x 1 root root 3689352 Oct 10  2019 /usr/bin/python2.7*
lrwxrwxrwx 1 root root       9 Mar 26  2019 /usr/bin/python3 -> python3.7*
-rwxr-xr-x 2 root root 4877888 Apr  2  2019 /usr/bin/python3.7*
lrwxrwxrwx 1 root root      33 Apr  2  2019 /usr/bin/python3.7-config -> x86_64-linux-gnu-python3.7-config*
-rwxr-xr-x 2 root root 4877888 Apr  2  2019 /usr/bin/python3.7m*
lrwxrwxrwx 1 root root      34 Apr  2  2019 /usr/bin/python3.7m-config -> x86_64-linux-gnu-python3.7m-config*
lrwxrwxrwx 1 root root      16 Mar 26  2019 /usr/bin/python3-config -> python3.7-config*
lrwxrwxrwx 1 root root      10 Mar 26  2019 /usr/bin/python3m -> python3.7m*
lrwxrwxrwx 1 root root      17 Mar 26  2019 /usr/bin/python3m-config -> python3.7m-config*

Sidenote2: (在极少数情况下,python 程序会调用一个带有 subprocess模块的子程序,以指定要运行哪个程序,人们可以使用 sys 模块或者父进程上设置的 PYTHONPATH环境变量修改子进程的路径,或者指定完整的路径... ... 但是由于路径是由子进程继承的,所以这不太可能是一个问题。)

根据一个快速谷歌搜索,这个更新只适用于当前的外壳你已经打开。它可以通过键入 python3来修复,因为 mac 和 linux 非常相似,所以这种情况可以同时发生。链接到谷歌搜索结果。

另外,正如 ninjagecko 所说,大多数程序还没有更新到3.x,因此将默认的 python 设置为3.x 会破坏应用程序中使用的许多 python 脚本。

修改“默认”Python,将其置于系统 Python 之前,例如:

export PATH=/usr/local/bin:$PATH

在使用 Python.org 安装程序的 Mac OS X 上,您显然需要使用 python3而不是 python来调用 Python 3。目前是为 Python2版本保留的。您还可以使用 python3.2来专门调用该版本。

$ which python
/usr/bin/python
$ which python3
/Library/Frameworks/Python.framework/Versions/3.2/bin/python3
$ cd /Library/Frameworks/Python.framework/Versions/3.2/bin/
$ ls -l
total 384
lrwxr-xr-x  1 root  admin      8 Apr 28 15:51 2to3@ -> 2to3-3.2
-rwxrwxr-x  1 root  admin    140 Feb 20 11:14 2to3-3.2*
lrwxr-xr-x  1 root  admin      7 Apr 28 15:51 idle3@ -> idle3.2
-rwxrwxr-x  1 root  admin    138 Feb 20 11:14 idle3.2*
lrwxr-xr-x  1 root  admin      8 Apr 28 15:51 pydoc3@ -> pydoc3.2
-rwxrwxr-x  1 root  admin    123 Feb 20 11:14 pydoc3.2*
-rwxrwxr-x  2 root  admin  25624 Feb 20 11:14 python3*
lrwxr-xr-x  1 root  admin     12 Apr 28 15:51 python3-32@ -> python3.2-32
lrwxr-xr-x  1 root  admin     16 Apr 28 15:51 python3-config@ -> python3.2-config
-rwxrwxr-x  2 root  admin  25624 Feb 20 11:14 python3.2*
-rwxrwxr-x  1 root  admin  13964 Feb 20 11:14 python3.2-32*
lrwxr-xr-x  1 root  admin     17 Apr 28 15:51 python3.2-config@ -> python3.2m-config
-rwxrwxr-x  1 root  admin  25784 Feb 20 11:14 python3.2m*
-rwxrwxr-x  1 root  admin   1865 Feb 20 11:14 python3.2m-config*
lrwxr-xr-x  1 root  admin     10 Apr 28 15:51 pythonw3@ -> pythonw3.2
lrwxr-xr-x  1 root  admin     13 Apr 28 15:51 pythonw3-32@ -> pythonw3.2-32
-rwxrwxr-x  1 root  admin  25624 Feb 20 11:14 pythonw3.2*
-rwxrwxr-x  1 root  admin  13964 Feb 20 11:14 pythonw3.2-32*

如果您还从 Python.org 安装了 Python 2,那么它将有一个类似的框架 bin 目录,没有重叠的文件名(2to3除外)。

$ open /Applications/Python\ 2.7/Update\ Shell\ Profile.command
$ sh -l
$ echo $PATH
/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Frameworks/Python.framework/Versions/3.2/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
$ which python3
/Library/Frameworks/Python.framework/Versions/3.2/bin/python3
$ which python
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
$ cd /Library/Frameworks/Python.framework/Versions/2.7/bin
$ ls -l
total 288
-rwxrwxr-x  1 root  admin    150 Jul  3  2010 2to3*
lrwxr-x---  1 root  admin      7 Nov  8 23:14 idle@ -> idle2.7
-rwxrwxr-x  1 root  admin    138 Jul  3  2010 idle2.7*
lrwxr-x---  1 root  admin      8 Nov  8 23:14 pydoc@ -> pydoc2.7
-rwxrwxr-x  1 root  admin    123 Jul  3  2010 pydoc2.7*
lrwxr-x---  1 root  admin      9 Nov  8 23:14 python@ -> python2.7
lrwxr-x---  1 root  admin     16 Nov  8 23:14 python-config@ -> python2.7-config
-rwxrwxr-x  1 root  admin  33764 Jul  3  2010 python2.7*
-rwxrwxr-x  1 root  admin   1663 Jul  3  2010 python2.7-config*
lrwxr-x---  1 root  admin     10 Nov  8 23:14 pythonw@ -> pythonw2.7
-rwxrwxr-x  1 root  admin  33764 Jul  3  2010 pythonw2.7*
lrwxr-x---  1 root  admin     11 Nov  8 23:14 smtpd.py@ -> smtpd2.7.py
-rwxrwxr-x  1 root  admin  18272 Jul  3  2010 smtpd2.7.py*

我使用的是 OS X 10.7.5和 Python 3.4.2。如果您键入 python3并且您想要运行它将使用 python3运行它。比如说 它运行了我编写的名为 test001的测试程序。我希望这有所帮助。

这是个老问题了,不过你可以选择:

virtualenv --python=python3.5 .venv
source .venv/bin/activate

检查 python3的位置

$ which python3
/usr/local/bin/python3

在 bash _ profile 中编写别名

vi ~/.bash_profile
alias python='/usr/local/bin/python3'

重新加载 bash _ profile

source ~/.bash_profile

确认 python 命令

$ python --version
Python 3.6.5

导航到:

我的电脑-> 属性-> 高级-> 环境变量-> 系统变量

假设您已经在 path 变量中添加了 python 2.7,并且希望将默认路径更改为 python 3。X

然后在 python2.7 path 之前添加 python3.5.x 文件夹的路径。

Open cmd: 键入“ python —— version”

Python 版本将更改为 python 3.5. x

更新于2022年5月11日星期三东部时间下午6:36

谢谢@Aditya Deshpande! 好建议!

我刚刚修正了我的答案。

服用 ~/.bashrc~/.zshrc后,就没有必要 退出并重新启动终端


做正确的事,做正确的事!

—— > 0打开你的终端,

--首先输入 python -V,它可能显示:

Python 2.7.10

- 第二个输入 python3 -V,它可能显示:

Python 3.7.2

--第三个输入 where pythonwhich python,它可能显示:

/usr/bin/python

--第四个输入 where python3which python3,它可能显示:

/usr/local/bin/python3

第五,在你的 PATH 环境变量文件的底部添加以下代码行,在 Bash 下面的 ~/.profile file or ~/.bash_profile文件或者 zsh 下面的 ~/.zshrc文件。

alias python='/usr/local/bin/python3'

或者

alias python=python3

- Bash 下的第六个输入 source ~/.bash_profile或 zsh 下的 source ~/.zshrc

第七步,检查 Python的版本




输入 python -V,可能会显示:

Python 3.7.2

我已经成功地尝试过了。

另外,zsh 下的 ~/.bash_profile不是那个 ~/.bash_profile

PATH 的环境变量是 zsh,而不是 ~/.profile(或 ~/.bash_file)。

救救你们!

sudo mv /usr/bin/python /usr/bin/python2
sudo ln -s $(which python3) /usr/bin/python

这将破坏脚本,但正是改变 python 的方法。您还应该重写脚本,不要假设 python是2.x。无论在哪里调用 system或者 exec,这都是有效的。

简而言之: 更改环境变量中的路径!

视窗:

  • 高级 System Settings > Advance (tab)。在底部你会发现 'Environment Variables'

  • 双击 Path。您将看到其中一个 python 安装的路径,将其更改为所需版本的路径。

检查 python3具有库的执行路径

$ which python3
/usr/local/bin/python3  some OS might have /usr/bin/python3

打开 bash _ profile 文件并添加别名

vi ~/.bash_profile
alias python='/usr/local/bin/python3' or alias python='/usr/bin/python3'

重新加载 bash _ profile 以使修改生效

source ~/.bash_profile

运行 python 命令并检查它是否正在使用 python3进行加载

$ python --version
Python 3.6.5

您可以使用以下命令临时更改或在不同版本之间切换:

set path=C:\Users\Shaina\AppData\Local\Programs\Python\Python35-32;%PATH%
python --version

enter image description here

以更高的优先级设置 Python 3.5

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.5 2

检查结果

sudo update-alternatives --config python
python -V

在我的 Mac OSX 通过 Mac 端口安装了 Python 2.7.18上,我可以用以下方法将 python 版本设置为2.7:

$ sudo port select --set python python27

所以:

$ python -V
Python 2.7.18

在将新版本的 python 安装到您的计算机之后..。

当你想要在终端上运行一个 python 程序(例如‘ Program.py’)(在你的系统上使用最新版本的 python) ; 不要运行‘ python Program.py’,而是运行 Python3程序

类似地,如果您希望在终端中使用 python (在您的系统中使用 python 的最新版本) ,请运行 蟒蛇3而不是‘ python’

作为试图在终端中运行‘ python3-v’的测试..。

需要注意的是,最新版本的 Homebrew/MacOS 将需要一个不同的 PATH 条目,因为 Homebrew 安装 Python 的位置已经更改。把这个加到你的。Zshrc:

export PATH="/opt/homebrew/opt/python/libexec/bin:$PATH"

这将确保 Homebrew 安装的非版本化的 python 链接出现在2.x 版本之前,并且将保护您不受任何对 python 的版本更新的影响,因为每当它更新版本时,brew 都会更新非版本化的链接。

为了更改 python 版本的上下文切换而不导出环境变量。请使用下面的视频链接查看: Https://youtu.be/jtn4mhnhjzs

从 macOS Catalina 开始,默认的 shell 是 zsh。因此,在打开新终端时,所有这些 ~/.bash_profile更改都不会更改默认值,因为新终端是 zsh shell 而不是 bash shell。

可以通过键入 echo $SHELL来确认终端是 zsh shell,您应该会看到一个响应: zsh

你该怎么办?您应该使用适用于 zsh shell 还有 bash shell 的解决方案。因此,应该这样做:

  1. 输入: vi ~/.bash_profile
  2. 输入: alias python='python3'
  3. 关闭并保存 bash_profile。输入: :wq
  4. 现在打开/创建 zsh 配置文件
  5. 将 bash 源代码放到 zhrc 中。输入: source ~/.bash_profile

现在,在 zsh shell 中,python 将自动别名为 python3(如果切换默认值,则使用 bash)。

测试: python --version

Python 3.8.9