【问题标题】:How do I initialize / switch to python3 from python2 in terminal?如何在终端中从 python2 初始化/切换到 python3?
【发布时间】:2020-07-24 16:03:37
【问题描述】:

我刚刚创建了我的第一个 AWS EC2 实例。我使用sudo yum install python3 -y 安装Python3,但是当我通过python --version 检查版本时,它显示的是Python 2.7.16。如何切换版本?

【问题讨论】:

  • 使用python3 命令
  • 这似乎没有任何作用。后来我又查了一下版本,说是2.7。
  • 如中,使用python3 而不是python
  • 如何删除 Python2? sudo yum uninstall python 不起作用。

标签: python amazon-web-services amazon-ec2


【解决方案1】:

您可以直接从终端使用python3 调用python 3,或者通过将以下行添加到您的~/.bashrc~/.bash_aliases 文件来创建别名:

alias python=python3

related question 中提供了更多详细信息和故障排除提示。

【讨论】:

    【解决方案2】:

    有几种方法可以做到这一点:

    1. 您可以显式请求python3,按原样调用它,而不仅仅是python,即:

      $ python3
      Python 3.7.6 (default, Feb 26 2020, 20:54:15)
      [GCC 7.3.1 20180712 (Red Hat 7.3.1-6)] on linux
      Type "help", "copyright", "credits" or "license" for more information.
      >>>
      
    2. 根据@Nick Walsh 的回答,您可以通过将以下内容放入.profile.bashrc 甚至.bash_aliases 中来创建一个外壳alias(1),它只是将python 扩展为python3

      alias python=python3
      

      授予python3 在您的PATH 中,这将毫无障碍地工作,另外一个好处是这是一个每个用户 设置,这意味着您不会更改系统 -宽 python 解释器(因为 python 仍然指向 /usr/bin/python2)。如果您愿意,也可以选择系统范围的别名,方法是修改 /etc/profile/etc/bashrc,在此处添加 alias

    3. 您可以替换 python 符号链接,将其链接到 python3

      您可以使用ln(1) 实现此目的(密切注意#$ 提示符,这意味着您需要root 权限才能发出此命令。使用sudo 就足够了):

      # ln -sf /usr/bin/python{3,}
      

      我正在利用 bash 的字符串扩展功能来避免重复。该命令有效地扩展为:

      # ln -sf /usr/bin/python3 /usr/bin/python
      

      这可能是为了可移植性而推荐的(当涉及到脚本时)。

    4. 后一种选择可能会在 python 更新之前有效,用python2 再次替换默认的python 解释器。 @kichik 指出使用 alternatives(8) 来充分(并且真正持久地)配置您的 python 解释器。

      根据this answer,您可以发出以下命令安装并配置您的默认python解释器:

      # alternatives --install /usr/bin/python python /usr/bin/python2 50
      # alternatives --install /usr/bin/python python /usr/bin/python3 60
      # alternatives --config python
      
      There are 2 programs which provide 'python'.
      
        Selection    Command
      -----------------------------------------------
         1           /usr/bin/python2
      *+ 2           /usr/bin/python3
      
      Enter to keep the current selection[+], or type selection number: 2
      $ alternatives --display python
      python - status is manual.
       link currently points to /usr/bin/python3
      /usr/bin/python2 - priority 50
      /usr/bin/python3 - priority 60
      Current `best' version is /usr/bin/python3.
      $ python
      Python 3.7.6 (default, Feb 26 2020, 20:54:15)
      [GCC 7.3.1 20180712 (Red Hat 7.3.1-6)] on linux
      Type "help", "copyright", "credits" or "license" for more information.
      >>>
      

    【讨论】:

    • Nick Walsh 提出了另一个漂亮且可能更简单的替代方案,它以 shell 别名的形式出现,将 python3 隐藏在 python 别名后面。这不同于在系统范围内破坏性地替换默认 python 解释器的符号链接方法。这种方法是特定于用户的。我猜,在这种情况下,它不是很重要。他的回答还包括一个非常有用的问题!请务必检查一下。
    • alternatives 是更正式的方式。否则你的符号链接可能会被升级覆盖。
    • 啊,我不知道这个!这可能是在系统范围内配置它的最佳选择。我会努力将其添加到我的答案中,谢谢!
    猜你喜欢
    • 1970-01-01
    • 2014-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-08
    • 2019-05-22
    • 2018-05-30
    • 2020-10-11
    相关资源
    最近更新 更多