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

时间:2013-10-08 19:04:00

标签: 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

如何让2.7成为默认版本,所以当我输入python时,它会让我进入2.7?

7 个答案:

答案 0 :(得分:164)

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

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

最重要的是,使用/usr/bin进行操作可能会破坏您的包管理器管理包的能力。并且更改PATH中目录的顺序将影响除Python之外的许多其他内容。 (事实上​​,在/usr/local/bin之前让/usr/bin更为常见,这可能是你真正想要的 - 但如果你有相反的方式,那么可能是有充分理由的。)

但是当你输入python时,你不需要需要更改默认的Python以使系统运行2.7。


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

alias python=/usr/local/bin/python2.7

如果您希望更改保持不变,请在提示符处输入,或者将其放在~/.bashrc中,现在当输入python时,它会运行您选择的2.7 ,但是当您系统上的某些程序尝试使用/usr/bin/env python运行脚本时,它会运行标准2.6。


或者,只需从2.7(或不同项目的单独venv)中创建virtual environment,然后在venv中进行工作。

答案 1 :(得分:18)

/usr/local/bin添加到列表中早于PATH的{​​{1}}环境变量中。

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

.bashrc

这将导致您的shell首先查看export PATH="/usr/local/bin:$PATH" 中的python,然后再查看/usr/local/bin中的/usr/bin

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

答案 2 :(得分:1)

通过以下方式验证python的当前版本:

$ python --version

然后检查python是指向该文件的符号链接。

  $ ll /usr/bin/python

Ex输出:

 lrwxrwxrwx 1 root root 9 Jun 16  2014 /usr/bin/python -> python2.7*

检查其他可用的python版本:

$ ls /usr/bin/python*

Ex输出:

/usr/bin/python     /usr/bin/python2.7-config  /usr/bin/python3.4         /usr/bin/python3.4m-config  /usr/bin/python3.6m         /usr/bin/python3m
/usr/bin/python2    /usr/bin/python2-config    /usr/bin/python3.4-config  /usr/bin/python3.6          /usr/bin/python3.6m-config  /usr/bin/python3m-config
/usr/bin/python2.7  /usr/bin/python3           /usr/bin/python3.4m        /usr/bin/python3.6-config   /usr/bin/python3-config     /usr/bin/python-config

如果要将python的当前版本更改为3.6版本编辑文件〜/ .bashrc:

vim ~/.bashrc

在文件末尾添加以下行并保存:

alias python=/usr/local/bin/python3.6

要为python 3.6安装pip

$ sudo apt-get install python3.6 python3.6-dev
$ sudo curl https://bootstrap.pypa.io/ez_setup.py -o - | sudo python3.6
$ sudo easy_install pip

成功后,检查点子的当前版本:

$ pip3 -V

Ex输出:

pip 1.5.4 from /usr/lib/python3/dist-packages (python 3.6)

答案 3 :(得分:0)

所有操作系统均随附python的默认版本,并且位于/ usr / bin中。操作系统随附的所有脚本(例如yum)都指向/ usr / bin中的此版本的python。 当您想安装新版本的python时,您不想破坏可能不适用于新版本python的现有脚本。

正确的方法是将python安装为备用版本。

e.g.
wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2 
tar xf Python-2.7.3.tar.bz2
cd Python-2.7.3
./configure --prefix=/usr/local/
make && make altinstall

现在,通过执行此操作,像yum这样的现有脚本仍可与/ usr / bin / python一起使用。 而您的默认python版本将是/ usr / local / bin中安装的版本。 即当您键入python时,您将获得2.7.3

这是因为。 $ PATH变量在usr / bin之前具有/ usr / local / bin。

/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

如果python2.7仍不能作为默认的python版本生效,则需要做

export PATH="/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"

答案 4 :(得分:0)

最简单的方法; 这三个命令会帮你设置,

Python 2.x 到 3.x

  1. 查看python版本,使用python --version(让你安装一个是2.7.x)
  2. 找到Python 3的安装位置,使用which python3(或which python为您提供当前安装的python版本)
  3. 最后一步,使用别名,alias python=/usr/bin/python3.6(上述步骤中的一个)
  4. 现在,再次运行,python --version,您会发现已安装 3.6.x

Python 3.x 到 2.x(几乎相同)

  1. 查看python版本,使用python --version(让你安装一个是3.6.x)
  2. 找到 Python 2 的安装位置,使用 which python2which python 为您提供当前安装 Python 版本的位置。)
  3. 最后一步,使用别名,alias python=/usr/bin/python2.7(您在上面的步骤中得到的)
  4. 现在,再次运行,python --version,您会发现已安装 2.x.x

答案 5 :(得分:-2)

输入命令

which python

//output:
/usr/bin/python

cd /usr/bin
ls -l

在这里您可以看到类似的内容

lrwxrwxrwx 1 root   root            9 Mar  7 17:04  python -> python2.7

您的默认python2.7被软链接到文本'python'

因此删除python的软链接

sudo rm -r python

然后重试上述命令

ls -l

您可以看到该软链接已删除

-rwxr-xr-x 1 root   root      3670448 Nov 12 20:01  python2.7

然后为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

输入helpcopyrightcreditslicense以获得更多信息。

答案 6 :(得分:-8)

我猜您手动安装了2.7版本,而2.6则来自一个软件包?

简单的答案是:卸载python包。

更复杂的是:不要在/ usr / local中手动安装。用2.7版本构建一个包,然后升级。

包裹处理取决于您使用的分发。