Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
linux上的两个python版本。如何将2.7设置为默认值_Python_Linux_Centos - Fatal编程技术网

linux上的两个python版本。如何将2.7设置为默认值

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

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

/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
    中的所有命令都停止了工作)。我遵循了