Linux上有两个版本的python.如何使2.7默认

Ant*_*ony 122 python linux centos

我的linuxbox上有两个版本的python:

$python
Python 2.6.6 (r266:84292, Jul 10 2013, 22:48:45) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 


$ /usr/local/bin/python2.7
Python 2.7.3 (default, Oct  8 2013, 15:53:09) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

$ which python
/usr/bin/python
$ ls -al /usr/bin/python
-rwxr-xr-x. 2 root root 4864 Jul 10 22:49 /usr/bin/python
Run Code Online (Sandbox Code Playgroud)

我怎样才能使2.7成为默认版本,所以当我输入python它时我会把它放到2.7?

aba*_*ert 168

您可能实际上并不想更改默认的Python.

您的发行版安装了标准系统Python /usr/bin,并且可能具有依赖于此存在的脚本,并且可以选择#! /usr/bin/env python.你通常可以在2.7中运行Python 2.6脚本,但你想冒风险吗?

最重要的是,monkeying /usr/bin可能会破坏您的包管理器管理包的能力.PATH除了Python之外,改变你的目录顺序会影响很多其他的东西.(事实上​​,/usr/local/bin提前出现更为常见/usr/bin,而且可能是你真正想要的 - 但如果你有相反的方式,那么可能是有充分理由的.)

但是,当您键入时,您无需更改默认Python以使系统运行2.7 python.


首先,您可以设置shell别名:

alias python=/usr/local/bin/python2.7
Run Code Online (Sandbox Code Playgroud)

~/.bashrc如果您希望更改是持久的,请在提示符下键入,或者将其放入您的内容中,现在当键入python它时运行您选择的2.7,但是当您系统上的某个程序尝试运行脚本时/usr/bin/env python,运行标准2.6.


或者,只需从2.7(或不同项目的单独的venv)中创建一个虚拟环境,并在venv中进行工作.

  • @Anthony:将来,如果有人告诉你要更改/ usr/bin中的内容(或/ usr/local之外的/ usr中的任何内容),请记下那里有什么,备份...... (7认同)

Amb*_*ber 18

添加/usr/local/bin到您的PATH环境变量,列表中的早于/usr/bin.

通常这是在你的shell的rc文件中完成的,例如对于bash,你可以把它放在.bashrc:

export PATH="/usr/local/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)

这会导致你的shell首先看到pythonin /usr/local/bin,然后再进入/usr/bin.

(当然,这意味着你还需要/usr/local/bin/python指向python2.7- 如果它还没有,你需要对其进行符号链接.)


小智 5

输入命令

which python

//output:
/usr/bin/python

cd /usr/bin
ls -l
Run Code Online (Sandbox Code Playgroud)

在这里你可以看到这样的东西

lrwxrwxrwx 1 root   root            9 Mar  7 17:04  python -> python2.7
Run Code Online (Sandbox Code Playgroud)

您的默认 python2.7 软链接到文本“python”

所以去掉软链接python

sudo rm -r python
Run Code Online (Sandbox Code Playgroud)

然后重试上面的命令

ls -l
Run Code Online (Sandbox Code Playgroud)

你可以看到软链接被删除了

-rwxr-xr-x 1 root   root      3670448 Nov 12 20:01  python2.7
Run Code Online (Sandbox Code Playgroud)

然后为python3.6新建一个软链接

ln -s /usr/bin/python3.6 python

然后python在终端中尝试命令

//output:
Python 3.6.7 (default, Oct 22 2018, 11:32:17) 
[GCC 8.2.0] on linux
Run Code Online (Sandbox Code Playgroud)

类型helpcopyrightcreditslicense了解更多信息。