如何在arch linux中用python 2完全替换python 3

use*_*508 15 environment-variables archlinux python-2.7 python-3.x

我想在arch linux中用python 2完全替换python 3.我已经阅读了https://wiki.archlinux.org/index.php/Python但它只提供了一个临时修复.我打电话的时候需要确保

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

我的程序使用python 2而不是python 3.

Chr*_*lan 39

在Arch中,/usr/bin/python实际上是python3的符号链接.假设您已经以root用户身份安装了python2,请将符号链接更改为指向python2:

cd /usr/bin
ls -l python
    lrwxrwxrwx 1 root root 7  5 sept. 07:04 python -> python3
ln -sf python2 python
ls -l python
    lrwxrwxrwx 1 root root 7 Dec 11 19:28 python -> python2
Run Code Online (Sandbox Code Playgroud)

如果您正在使用该python2-virtualenv软件包,请执行以下操作/usr/bin/virtualenv:

cd /usr/bin
ln -sf virtualenv2 virtualenv
Run Code Online (Sandbox Code Playgroud)

  • 只是想补充一点,这似乎非常危险.这不仅仅意味着在基础安装上使用python的所有脚本(因为python3是默认的)才会开始破坏吗? (5认同)
  • @ToddMorrison完全有可能,如果他们依赖于v3弃用的东西!但这就是OP所要求的,而Arch则是关于剥离那个创可贴的,而蟒蛇2.7则是v2的终点. (2认同)

Iva*_*kin 7

更改默认符号链接是个坏主意,它会在python3更新时重新创建.相反,创建一个本地python覆盖:

sudoedit /usr/local/bin/python

将其粘贴到内部并保存文件:

#!/bin/bash
exec python2 "$@"
Run Code Online (Sandbox Code Playgroud)

别忘了让它可执行:

sudo chmod +x /usr/local/bin/python

  • 更简单:符号链接。`sudo ln -s / usr / bin / python2 / usr / local / bin / python`。对`pip`和`virtualenv`执行相同的操作。 (2认同)