我的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?
答案 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
python --version
(让你安装一个是2.7.x)which python3
(或which python
为您提供当前安装的python版本)alias python=/usr/bin/python3.6
(上述步骤中的一个)python --version
,您会发现已安装 3.6.x
。Python 3.x 到 2.x(几乎相同)
python --version
(让你安装一个是3.6.x)which python2
(which python
为您提供当前安装 Python 版本的位置。)alias python=/usr/bin/python2.7
(您在上面的步骤中得到的)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
输入help
,copyright
,credits
或license
以获得更多信息。
答案 6 :(得分:-8)
我猜您手动安装了2.7版本,而2.6则来自一个软件包?
简单的答案是:卸载python包。
更复杂的是:不要在/ usr / local中手动安装。用2.7版本构建一个包,然后升级。
包裹处理取决于您使用的分发。