linux下切换python2和python3(转)

0000查询系统采用的python版本

[[email protected] ~]$ python --version
Python 3.7.3
系统采用的python版本为3.7.3
以下查询py3和py2的目录:
[[email protected] ~]$ which python3
/usr/bin/python3
[[email protected] ~]$ which python2
/usr/bin/python2

0x00 为什么需要有两个版本的Python

Python2和Python3不兼容是每个接触过Python的开发者都知道的事,虽说Python3是未来,但是仍然有很多项目采用Python2开发。Linux的许多发行版本(如Ubuntu)都会自带Python2.7,但是当我们准备开发一个Python3项目的时候,我们该怎么办?

那就把Python3也下咯。嗯,Linux下确实是可以两个一起装的,但是问题是你怎么切换两个版本的Python。
0x01 修改别名

首先先来看一下我们的默认Python版本

$ python --version
Python 2.7.6

然后我们修改一下别名

$ alias python=‘/usr/bin/python3‘
$ python --version
Python 3.4.3 # 版本已经改变

/usr/bin/python3 这个路径是怎么找到的呢?

一般来说,软件的二进制文件都可以在 /usr/bin 或 /usr/local/bin (这个优先级高一点)找到。当然如果你是Debian系的Linux,可以这么找(前提是你已经安装了Python3):

$ dpkg -L python3

上面的别名修改只是暂时性的,重开一个窗口后配置就不见了。如果要使每个窗口都使用这个别名,可以编辑 ~/.bashrc (如果你是别的shell的话,就不是这个文件,如zsh是 ~/.zshrc ),把alias配置写入文件。

修改别名优点是足够简单,但是切换不灵活。
0x02 链接文件

在 /usr/bin 中建立一个链接文件指向Python3。

$ ln -s python /usr/bin/python3
$ python --version
Python 3.4.3

跟修改别名一样,也是修改不够灵活。
0x03 采用update-alternatives 切换版本

update-alternatives是Debian提供的一个工具(非Debian系的就不用看了),原理类似于上面一个办法,也是通过链接的方式,但是其切换的过程非常方便。

首先看一下update-alternatives的帮助信息:

$ update-alternatives --help
用法:update-alternatives [ ...]

命令:
--install
[--slave ] ...
在系统中加入一组候选项。
--remove 从 替换组中去除 项。
--remove-all 从替换系统中删除 替换组。
--auto 将 的主链接切换到自动模式。
--display 显示关于 替换组的信息。
--query 机器可读版的 --display .
--list 列出 替换组中所有的可用候选项。
--get-selections 列出主要候选项名称以及它们的状态。
--set-selections 从标准输入中读入候选项的状态。
--config 列出 替换组中的可选项,并就使用其中
哪一个,征询用户的意见。
--set 将 设置为 的候选项。
--all 对所有可选项一一调用 --config 命令。

是指向 /etc/alternatives/ 的符号链接。
(如 /usr/bin/pager)
是该链接替换组的主控名。
(如 pager)
是候选项目标文件的位置。
(如 /usr/bin/less)
是一个整数,在自动模式下,这个数字越高的选项,其优先级也就越高。

选项:
--altdir 改变候选项目录。
--admindir 设置 statoverride 文件的目录。
--log 改变日志文件。
--force 就算没有通过自检,也强制执行操作。
--skip-auto 在自动模式中跳过设置正确候选项的提示
(只与 --config 有关)
--verbose 启用详细输出。
--quiet 安静模式,输出尽可能少的信息。不显示输出信息。
--help 显示本帮助信息。
--version 显示版本信息。

我们仅需要了解3个参数就行了

--install <链接> <名称> <路径> <优先级> :建立一组候选项
--config <名称> :配置 <名称>组中的可选项,并选择使用其中哪一个
--remove <名称> <路径> :从 <名称> 中去掉 <路径>选项

首先我们先看一下有没有关于Python的可选项:

$ update-alternatives --display python
update-alternatives: 错误: 无 python 的候选项

那首先先建立python的组,并添加Python2和Python3的可选项

$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 2 # 添加Python2可选项,优先级为2
$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.4 1 #添加Python3可选项,优先级为1

注意,这里的 /usr/bin/python 链接文件,两个可选项必须是一样的,这样这个链接文件才可以选择两个不同的可选项去链接。

这时如果我们查看 /usr/bin/python 这个文件时,会发现它已经链接到了 /etc/alternatives/python 。

lrwxrwxrwx 1 root root 24 6月 19 18:39 python -> /etc/alternatives/python

然后我们再看一下版本

$ python --version
Python 2.7.6

为什么还是Python2,看一下配置

$ sudo update-alternatives --config python
有 2 个候选项可用于替换 python (提供 /usr/bin/python)。

选择 路径 优先级 状态

  • 0 /usr/bin/python2.7 2 自动模式
    1 /usr/bin/python2.7 2 手动模式
    2 /usr/bin/python3.4 1 手动模式
    要维持当前值[*]请按回车键,或者键入选择的编号:

原来是因为默认选中了自动模式,而Python2的优先级高于Python3,这时候只要键入2,就可以使用Python3了。

如果你想要删除某个可选项的话:

$ sudo update-alternatives --remove python /usr/bin/python2.7

update-alternatives只适用于Debian系Liunx。
0x04 virtualenvwrapper 切换版本

virtualenvwrapper是管理Python虚拟环境的工具,可以很方便的为不同的项目建立独立的环境,每个项目都可以安装自己的依赖,同时也支持在不同的虚拟环境中存在不同版本的Python。

首先安装virtualenvwrapper,可以选择apt安装或者pip安装

apt安装

$ sudo apt-get install virtualenvwrapper

pip安装

$ sudo pip install virtualenvwrapper

当你需要使用Python2开发项目时,建立一个Python2的虚拟环境:

$ mkvirtualenv -p /usr/bin/python2 env27

当你需要Python3开发时:

$ mkvirtualenv -p /usr/bin/python3.4 env34

然后可以随时切换不同的虚拟环境:

$ workon env27 # 进入Python2环境
$ workon env34 # 进入Python3环境

更爽的是,你可以在进入虚拟环境的同时切换到项目目录,只需要编辑 $VIRTUAL_ENV/bin/postactivate 这个文件即可:

$ vim $VIRTUAL_ENV/bin/postactivate #前提是已经进入对应的虚拟环境

在文件中添加切换目录的命令:

cd /path/to/your/project

0x05 总结

前面两种方法不推荐使用。

使用 update-alternatives 切换版本只适用于Debian系的Linux。

推荐使用 virtualenvwrapper 来管理虚拟环境和版本。

另外,本文介绍的切换不同版本软件的方法,除了 virtualenvwrapper 之外,前面3种方法都适用于其他软件,比如Java(open-jdk和oracle-jdk)。

转自:https://blog.csdn.net/justdoithai/article/details/70310095

原文地址:https://www.cnblogs.com/littlesuns/p/10664539.html

时间: 2024-11-08 07:35:20

linux下切换python2和python3(转)的相关文章

Linux 下升级 python2 到python3

一般情况下,系统自带的python 版本都是2.7.python2.7是2系列的最后一个版本,已经停止开发,不久将会终止支持.可以通过以下命令检查系统安装的python 是什么版本,例如以下版本是 python2.7 [[email protected] opt]# python -VPython 2.7.5[[email protected] opt]# python3-bash: python3: 未找到命令[[email protected] opt]# 方法/步骤 以下是简单快捷的升级到

Windows下安装python2和python3多版本教程 转

Windows下安装python2和python3多版本教程   转 作者:云游道士 字体:[增加 减小] 类型:转载 时间:2017-03-30我要评论 这篇文章主要介绍下Windows(我用的Win10)环境下的python2.x 和 python3.x 的安装,以及python2.x 与 python3.x 共存时的配置问题. 现在大家常用的桌面操作系统有:Windows.Mac OS.ubuntu,其中Mac OS 和 ubuntu上都会自带python.这里我们只介绍下Windows(

Linux下原码安装 python-3.6.6

Linux下原码安装 python-3.6.6 下载 # wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz 安装依赖包 # yum -y install zlib-devel bzip2-devel openssl-devel sqlite-devel readline-devel gcc 解压并进入到解压目录 # tar xvf Python-3.6.6.tgz # cd Python-3.6.6/ 修改 Modules

win10下安装python2与python3以及pip共存

一 分别安装python2和python3 注意: 安装时记得勾选 Add Python.exe to Path 二 安装pip Python3最新版本有pip,无需安装 Python2: 下载pip安装包: https://pypi.python.org/pypi/pip#downloads 2. 进入解压路径,执行命令以下命令:py -2 setup.py install 分别进入python和python3的pip目录下,删除pip.exe python2安装模块执行命令: pip2 in

MAC OS上切换python2与python3环境

问题背景 在MAC Book Pro上进行python编程时,由于安装了python2和python3的环境,需要在不同的工程使用不同的python环境,这就需要在两个环境间切换. 系统配置 Mac OS Yosemite 10.10.3 (14D136) python2.7.9 python3.4.3 解决方案 安装Homebrew 使用Homebrew安装python2和python3 安装virtualenv 使用virtualenv创建虚拟环境 激活虚拟环境 安装Homebrew htt

windows下安装python2与python3开发环境兼容

1下载安装在不同目录python2和python3 https://www.python.org/downloads/ 我的目录分别为 D:\python3\; D:\python2 2 修改环境变量 计算机--属性---高级系统设置--环境变量---选择PATH---> 添加变量值内容D:\python3\Scripts\;D:\python3\;D:\python2\Scripts\;D:\python2\    (python2与python3的安装路径) 3 修改应用程序名称 将pyth

Windows10下配置Python2和Python3共存 并用anaconda实现方便的包管理

适用于想要搭建Python2和Python3共存环境并方便进行包管理的开发者 Anaconda是Python的一个发行版 其中有非常方便的包管理工具conda 官方下载地址 https://www.anaconda.com/download/ 同时下载两个版本的anaconda 以下Python2简称py2 Python3亦然,anaconda简称conda pycharm是非常方便的Python IDE工具但是其包管理却是不区分py2和py3的有时候无法找到合适版本的包会提示错误信息(安装了c

linux下升级python2.0到python3.0

升级python cd /home/sanlang/tools wget http://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz  gunzip  Python-2.7.6.tgz  tar  xf Python-2.7.6.tar  cd Python-2.7.6  mkdir   -p  /application/python2.7.6  ./configure  --prefix=/application/python2.7.6 --

Linux下切换python版本

当你安装 Debian Linux 时,安装过程有可能同时为你提供多个可用的 Python 版本,因此系统中会存在多个 Python 的可执行二进制文件.你可以按照以下方法使用 ls 命令来查看你的系统中都有那些 Python 的二进制文件可供使用. $ ls/usr/bin/python*/usr/bin/python /usr/bin/python2 /usr/bin/python2.7/usr/bin/python3 /usr/bin/python3.4/usr/bin/python3.4