linux上的两个python版本。如何将2.7设置为默认值
我的linuxbox上有两个python版本:linux上的两个python版本。如何将2.7设置为默认值,python,linux,centos,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 Pytho
$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中?将/usr/local/bin
添加到路径
环境变量中,在列表中比/usr/bin
更早
通常,这是在shell的rc文件中完成的,例如,对于bash,您可以将其放入。bashrc
:
export PATH="/usr/local/bin:$PATH"
这将导致shell首先在/usr/local/bin
中查找python,然后再在/usr/bin
中查找
(当然,这意味着您还需要将/usr/local/bin/python
指向python2.7
——如果还没有,您需要对其进行符号链接。)我想您已经手动安装了2.7版本,而2.6来自一个软件包
简单的答案是:卸载python包
更复杂的是:不要在/usr/local中手动安装。使用2.7版本构建软件包,然后升级
包处理取决于您使用的发行版。您可能实际上不想更改默认的Python
您的发行版在/usr/bin
中安装了标准系统Python,并且可能有依赖于此的脚本,并且由#选择/usr/bin/env python
。您通常可以在2.7中运行Python 2.6脚本,但您想冒险吗
最重要的是,使用/usr/bin
可以破坏包管理器管理包的能力。更改路径中目录的顺序
将影响Python之外的许多其他事情。(事实上,在/usr/bin
之前放置/usr/local/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),并在venv中完成工作。所有操作系统都附带一个默认版本的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中的版本。
i、 当你输入python时,你会得到2.7.3
这是因为$路径变量在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"
输入命令
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
键入帮助
,版权
,信用证
或许可证
,了解更多信息。通过以下方式验证python的当前版本:
$ python --version
然后检查python是指向哪个文件的符号链接
$ ll /usr/bin/python
输出示例:
lrwxrwxrwx 1 root root 9 Jun 16 2014 /usr/bin/python -> python2.7*
/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
pip 1.5.4 from /usr/lib/python3/dist-packages (python 3.6)
检查python的其他可用版本:
$ ls /usr/bin/python*
输出示例:
lrwxrwxrwx 1 root root 9 Jun 16 2014 /usr/bin/python -> python2.7*
/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
pip 1.5.4 from /usr/lib/python3/dist-packages (python 3.6)
如果要将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
成功后,检查pip的当前版本:
$ pip3 -V
输出示例:
lrwxrwxrwx 1 root root 9 Jun 16 2014 /usr/bin/python -> python2.7*
/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
pip 1.5.4 from /usr/lib/python3/dist-packages (python 3.6)
最简单的方法;
这三个命令将帮助您设置
Python 2.x到3.x
查看python版本,使用python--version
(让您安装一个是2.7.x)
查找python3的安装位置,使用哪个python3
(或者哪个Python
提供当前安装的Python版本)
最后一步,使用别名,alias python=/usr/bin/python3.6
(上述步骤中的一个)
现在,再次运行,python--version
,您将发现,3.6.x
已安装
Python 3.x到2.x(几乎相同)
查看python版本,使用python--version
(让您安装一个是3.6.x)
查找python2的安装位置,使用哪个python2
(哪个Python
给出了当前版本Python的安装位置。)
最后一步,使用别名,alias python=/usr/bin/python2.7
(在上述步骤中得到的别名)
现在,再次运行,python--version
,您将发现,2.x.x
已安装
可能有必要适当地设置PYTHONHOME/unset它,如果它是由某个东西设置的。这几乎不像建议更改/usr/bin本身的解决方案那样危险……但我仍然认为这不是OP真正想要的。这对我从Ubuntu14.x升级到16.x后有所帮助。当我对fedora这样做时,yum或apt get做到了用户:是的,我同样打破了一个古老的曼德拉(将/usr/bin/env python
改为2.6,而不是2.3,这意味着rpm
中的一半命令和urpmi
中的所有命令都停止了工作)。我遵循了