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

问题描述 投票:117回答:6

我的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?

python linux centos
6个回答
166
投票

您可能实际上并不想更改默认的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中进行工作。


18
投票

/usr/local/bin添加到列表前面的PATH环境变量中,而不是/usr/bin

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

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

这将导致你的shell首先查看python中的/usr/local/bin,然后再与/usr/bin中的/usr/local/bin/python进行查找。

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


1
投票

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

  $ ll /usr/bin/python

然后检查python是哪个文件的符号链接。

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

输出Ex:

$ ls /usr/bin/python*

检查其他可用的python版本:

/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

输出Ex:

vim ~/.bashrc

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

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

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

$ 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

为python 3.6安装pip

$ pip3 -V

在成功时,检查点的当前版本:

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

输出Ex:

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

0
投票

所有操作系统都带有默认版本的python,它位于/ usr / bin中。操作系统附带的所有脚本(例如yum)都指向此版本的python驻留在/ usr / bin中。当你想安装新版本的python时,你不想破坏现有的脚本,这些脚本可能不适用于新版本的python。

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

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

现在通过这样做,像yum这样的现有脚本仍然可以使用/ usr / bin / python。你的默认python版本将是/ usr / local / bin中安装的版本。即当你输入python时你会得到2.7.3

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

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

如果python2.7仍然不能作为默认的python版本生效,那么你需要这样做

which python

//output:
/usr/bin/python

cd /usr/bin
ls -l

-2
投票

输入命令

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

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

sudo rm -r python

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

所以删除softlink python

ls -l

然后重试上面的命令

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

你可以看到软链接被删除

python

然后为python3.6创建一个新的softlink

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

然后在终端中尝试命令//output: Python 3.6.7 (default, Oct 22 2018, 11:32:17) [GCC 8.2.0] on linux

help

输入copyrightcreditslicense或qazxswpoi以获取更多信息。


-8
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.