How to switch between Python versions on Fedora Linux

Currently, the default python version on Fedora Linux is Python 2. Later
Fedora Linux release 22 will ship with the Python 3 as a default
version. In this config you will learn how to switch between python
versions on Fedora Linux. Let's start by listing all Python versions
available on your Fedora system:

# ls /usr/bin/python*
/usr/bin/python /usr/bin/python2.7 /usr/bin/python3 /usr/bin/python3.4m /usr/bin/python-coverage
/usr/bin/python2 /usr/bin/python2-coverage /usr/bin/python3.4 /usr/bin/python3-mako-render

Now, check your default python version:

# python -V
Python 2.7.8

To change python version on per user basis simply create a new alias in you .bashrc located under your home directory:

$ alias python='/usr/bin/python3.4'
$ . ~/.bashrc
$ python --version
Python 3.4.2

To change python version globally first check whether python alternative version is already registered by alternatives command:

# alternatives --list | grep -i python

No output means not alternative python version is configured yet. Register the two above listed python version with alternative command.

# alternatives --install /usr/bin/python python /usr/bin/python3.4 2
# alternatives --install /usr/bin/python python /usr/bin/python2.7 1

The above commands will instruct alternatives command to create relevant symbolic links to be used anytime a python command is executed. We have also given python3.4 a higher priority 2 which means, if no python alternative is selected the python3.4 will be used as default. After execution of the above commands your python version should change to python3.4 due to its higher priority.

# python -V
Python 3.4.1

To switch between above alternative python version is now simple as:

# alternatives --config python

There are 2 programs which provide 'python'.

  Selection    Command
-----------------------------------------------
*+ 1 /usr/bin/python3.4
2 /usr/bin/python2.7 Enter to keep the current selection[+], or type selection number: 2
[root@localhost fedora]# python -V
Python 2.7.8

1. Appendix

Known problems with Fedora Linux and Python 3 version: Error message:

# yum search package
File "/usr/bin/yum", line 30
except KeyboardInterrupt, e:
^
SyntaxError: invalid syntax

If you set python3 globally on your system change the yumshebang to python2:

# vi /usr/bin/yum
FROM:
#!/usr/bin/python
TO:
#!/usr/bin/python2.7

Similarly: Error message:

Downloading packages:
File "/usr/libexec/urlgrabber-ext-down", line 28
except OSError, e:
^
SyntaxError: invalid syntax
Exiting on user cancel

The issue is also related to Python 3 set as a default global version. To fix this error update /usr/libexec/urlgrabber-ext-down script:

# vi /usr/libexec/urlgrabber-ext-down
FROM:
#!/usr/bin/python
TO:
#!/usr/bin/python2.7

python更新后yum问题的更多相关文章

  1. CENTOS下Python 升级后YUM无法使用的解决办法

    Python有很多实用的工具,安装依赖python版本较高,升级Python后导致yum无法使用. 原因: 系统自带的yum依赖Python老版本,升级后不兼容 解决办法: 1. 列出所有版本,确定老 ...

  2. 如何解决python升级后yum报错

    当我们yum命令的时候,会提示 "File "/usr/bin/yum", line 30 except KeyboardInterrupt, e: ^ SyntaxEr ...

  3. 手动下载python更新后 换回以前版本

    因为用的时Ubuntu略低版本的,不想更新版本,但是经常更新内核和其他软件,尤其是最近自己更新python,但是软件更新救出错了,而且不能打开“Languae Support”(软件支持)和ibus输 ...

  4. 解决修改完系统默认python版本后yum不可用的问题!!!!!!

    文章转自: http://www.linuxidc.com/Linux/2013-05/84727.htm #vi /usr/bin/yum 将文件头部的: #!/usr/bin/python 改为: ...

  5. Python更新后ros用不了的bug

    一.原因 我同时安装了python2.7 和3.5,而且将python默认配置为python3.5,所以ros并不支持,所以提示找不到. 2.解决方式 通过修改不同版本的python的优先级,将pyt ...

  6. linux中python环境搭建及升级后yum不可用解决方案

    1.1 LinuxCentOS 为例.1.1.1 升级 Python(1) 下载 Python 版本$ wget https://www.python.org/ftp/python/2.7.11/Py ...

  7. CentOS 6.5升级Python后yum不可用的解决方案

    因开发需要,今天把CentOS 6.5自带的Python2.6.6升级到了Python2.7.3.按照如下步骤进行升级 1.查看当前系统python的版本 python -V 2.下载2.7.3版本的 ...

  8. CentOS6 系统下升级python后yum命令使用时报错

    CentOS6 系统下升级python后yum命令使用时报错,如下: [root@xxxxxxx]#yumFile"/usr/bin/yum",line30exceptKeyboa ...

  9. CentOS7 升级python同时解决yum损坏问题

    CentOS7中的python版本为python2.7.5,升级到最新版的python时需要注意两个问题 新版的python安装好后要修改python的系统默认指向问题 升级到最新版python后yu ...

随机推荐

  1. 常用API——字符串String型函数

    上图: 声明 var myString = new String(“Every good boy does fine.”); var myString = “Every good boy does f ...

  2. ORACLE OLAP错误ORA-06512: at "SYS.OLAPIHISTORYRETENTION"

    刚刚安装了ORACLE 10g R2后,启动数据库时发现告警日志有如下错误: Database Characterset is UTF8 replication_dependency_tracking ...

  3. C++ 栈和堆的区别

    C++中的存储区分为全局数据区.代码区.堆.栈. 全局数据区存放静态数据.全局变量.常量. 代码区存放所有类成员函数和非成员函数的代码. 栈区存放用于函数的返回地址.形参.局部变量.返回类型. 堆区存 ...

  4. Tomcat 启动花费很长时间的解决方案

    原始解决方案链接 将 $JAVA_PATH/jre/lib/security/java.security 中的 securerandom.source=file:/dev/urandom 替换为 se ...

  5. http 状态码含义

    HTTP状态码被分为五大类, 目前我们使用的HTTP协议版本是1.1, 支持以下的状态码.随着协议的发展,HTTP规范中会定义更多的状态码. 小技巧: 假如你看到一个状态码518, 你并不知道具体51 ...

  6. 聊天室(Java实现)

    功能: 登录 若用户账号不存在,弹出错误 若用户密码错误,弹出错误 若用户账号已在线,弹出错误 注册 若用户已注册,弹出错误 聊天室 多人聊天,类似QQ里的群. 点击右侧的在线用户,可进行一对一聊天. ...

  7. struts2中的OGNL详解

    先了解一下OGNL的概念 OGNL的全名称Object Graph Navigation Language.全称为对象图导航语言,是一种表达式语言.使用这种表达式语言,你可以通过某种表达式语法,存取J ...

  8. 洛谷CON1041 NOIP模拟赛一试

    A T2-power of 2 题目描述 是一个十分特殊的式子. 例如: n=0时 =2 然而,太大了 所以,我们让对10007 取模 输入输出格式 输入格式: n 输出格式:  % 10007 输入 ...

  9. Java 链表

    按链表的组织形式分有ArrayList和LinkList两种.ArrayList内部其实是用数组的形式实现链表,比较适合链表大小确定或较少对链表进行增删操作的情况,同时对每个链表节点的访问时间都是co ...

  10. django博客功能实现——标签功能

    标签功能添加流程 0.功能概括 标签作为文章中的分类标记,会显示出该文章是关于哪一方面的文章,比如是关于python的还是关于django的. 当我们点击该标签的时候,会出现该博客中所有属于该标签的文 ...