128

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

4

7 回答 7

178

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

您的发行版在 中安装了一个标准系统 Python /usr/bin,并且可能有依赖于此的脚本,并由#! /usr/bin/env python. 您通常可以在 2.7 中运行 Python 2.6 脚本,但您愿意冒险吗?

最重要的是,monkeying with/usr/bin会破坏你的包管理器管理包的能力。并且更改目录的顺序PATH会影响除 Python 之外的许多其他事情。(事实上​​,更常见的是/usr/local/bin提前/usr/bin,这可能是你真正想要的——但如果你有相反的方式,大概有一个很好的理由。)

但是您无需更改默认 Python 即可在您键入 2.7 时让系统运行python


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

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

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


或者,只需在 2.7 之外创建一个虚拟环境(或为不同的项目创建单独的 venv),然后在 venv 内完成您的工作。

于 2013-10-08T19:17:34.083 回答
20

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

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

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

这将导致您的 shell 先查找pythonin /usr/local/bin,然后再查找 in /usr/bin

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

于 2013-10-08T19:08:19.587 回答
6

输入命令

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

键入helpcopyright或了解credits更多license信息。

于 2019-03-07T11:55:54.903 回答
4

Verify current version of python by:

$ python --version

then check python is symbolic link to which file.

  $ ll /usr/bin/python

Output Ex:

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

Check other available versions of python:

$ ls /usr/bin/python*

Output 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

If want to change current version of python to 3.6 version edit file ~/.bashrc:

vim ~/.bashrc

add below line in the end of file and save:

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

To install pip for python 3.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

On Success, check current version of pip:

$ pip3 -V

Output Ex:

pip 1.5.4 from /usr/lib/python3/dist-packages (python 3.6)
于 2019-04-04T10:48:15.803 回答
2

所有操作系统都带有一个默认版本的 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"
于 2018-12-08T03:14:15.773 回答
0

最简单的方法;这三个命令将帮助您设置,

Python 2.x 到 3.x

  1. 看python版本,使用python --version(让你安装一个是2.7.x)
  2. 查找安装、使用Python 3which 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安装好了。
于 2021-03-18T08:23:12.270 回答
-8

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

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

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

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

于 2013-10-08T19:08:31.687 回答