Python 多版本共存之pyenv
经常遇到这样的情况:
- 系统自带的 Python 是 2.6,自己需要 Python 2.7 中的某些特性;
- 系统自带的 Python 是 2.x,自己需要 Python 3.x;
此时需要在系统中安装多个 Python,但又不能影响系统自带的 Python,即需要实现
Python 的多版本共存。pyenv 就是这样一个 Python 版本管理器。
安装 pyenv
在终端执行如下命令以安装 pyenv 以及几个插件:
$ curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
$ echo 'export PYENV_ROOT="$HOME/.pyenv"'>> ~/.bashrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"'>> ~/.bashrc
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
$ exec $SHELL -l
安装 Python
查看可安装的版本
$ pyenv install --list
该命令会列出可以用 pyenv 安装的 Python 版本,仅列举几个:
2.7.8 # Python 2 最新版本
3.4.1 # Python 3 最新版本
anaconda-4.0.0 # 支持 Python 2.6 和 2.7
anaconda3-4.0.0 # 支持 Python 3.3 和 3.4
其中形如 x.x.x 这样的只有版本号的为 Python 官方版本,其他的形如 xxxxx-x.x.x
这种既有名称又有版本后的属于 “衍生版” 或发行版。
安装 Python 的依赖包
在安装 Python 时需要首先安装其依赖的其他软件包,已知的一些需要预先安装的库如下。
在 CentOS/RHEL/Fedora 下:
sudo yum install readline readline-devel readline-static
sudo yum install openssl openssl-devel openssl-static
sudo yum install sqlite-devel
sudo yum install bzip2-devel bzip2-libs
在 Ubuntu下:
sudo apt-get update
sudo apt-get install make build-essential libssl-dev zlib1g-dev
sudo apt-get install libbz2-dev libreadline-dev libsqlite3-dev wget curl
sudo apt-get install llvm libncurses5-dev libncursesw5-dev
安装指定版本
使用如下命令即可安装 python 3.4.1:
$ pyenv install 3.4.1 -v
该命令会从 github 上下载 python 的源代码,并解压到 /tmp 目录下,然后在
/tmp 中执行编译工作。
若依赖包没有安装,则会出现编译错误,需要在安装依赖包后重新执行该命令。
如果网络不太好,用 pyenv 下载会比较慢,可以先执行该命令,然后到 ~/.pyenv/cache
目录下查看要下载的文件的文件名,然后自己到官方网站下载,并将文件放在 ~/.pyenv/cache
目录下。pyenv 会检查文件的完整性,若确认无误,则不会再重新下载。
对于科研环境,更推荐安装专为科学计算准备的 Anaconda 发行版,
pyenv install anaconda-4.0.0 安装 Python 2.x 版本,
pyenv install anaconda3-4.0.0 安装 Python 3.x 版本;
更新数据库
安装完成之后需要对数据库进行更新:
$ pyenv rehash
查看当前已安装的 python 版本
$ pyenv versions
* system (set by /home/seisman/.pyenv/version)
3.4.1
其中的星号表示当前正在使用的是系统自带的 python。
设置全局的 python 版本
$ pyenv global 3.4.1
$ pyenv versions
system
* 3.4.1 (set by /home/seisman/.pyenv/version)
当前全局的 python 版本已经变成了 3.4.1。也可以使用 pyenv local 或 pyenv shell
临时改变 python 版本。
确认 python 版本
$ python
Python 3.4.1 (default, Sep 10 2014, 17:10:18)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
使用 python
- 输入
python即可使用新版本的 python; - 系统自带的脚本会以
/usr/bin/python的方式直接调用老版本的 python,
因而不会对系统脚本产生影响; - 使用
pip安装第三方模块时会安装到~/.pyenv/versions/3.4.1下,
不会和系统模块发生冲突。 - 使用
pip安装模块后,可能需要执行pyenv rehash更新数据库;
使用 USTC 镜像
如果使用 pip 安装模块时速度比较慢,可以考虑使用中科大 LUG 提供的镜像,可以大大提供 pip 安装模块的速度。
编辑 ~/.pip/pip.conf 文件(如果没有则创建之),将 index-url 开头的一行修改为下面一行:
[global]
index-url = https://pypi.mirrors.ustc.edu.cn/simple
参考
修订历史
- 2013-10-04:初稿;
- 2014-10-07:将 Python 依赖包一段的位置提前;
- 2016-07-30:使用
pyenv-installer安装; - 2016-10-19:中科大 pypi 镜像;
Python 多版本共存之pyenv的更多相关文章
- Python多版本共存之pyenv
经常遇到这样的情况: 系统自带的Python是2.6,自己需要Python 2.7中的某些特性: 系统自带的Python是2.x,自己需要Python 3.x: 此时需要在系统中安装多个Python, ...
- Python多版本共存管理工具之pyenv
目录 Table of Contents 1. 安装pyenv 2. 安装Python 3.0 使用python 参考 Table of Contents 经常遇到这样的情况: 系统自带的Python ...
- Linux系统之路——python多版本共存问题(ps:自行切换python版本,pip安装遇到的一些问题)
经常遇到这样的情况: 系统自带的Python是2.6,自己需要Python 2.7中的某些特性: 系统自带的Python是2.x,自己需要Python 3.x: 此时需要在系统中安装多个Python, ...
- [转]Windows下Python多版本共存
https://blog.csdn.net/dream_an/article/details/51248736 Windows下Python多版本共存 Python数据科学安装Numby,pandas ...
- windows配置Python多版本共存
windows配置Python多版本共存 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 最近Python开发蛮火的,三年前我的一个运维朋友就告诉我说Python语言将来会很火,当时 ...
- Ancoda 下的python多版本共存
Ancoda 下的python多版本共存 virtualenv python 多版本共存 Pip, Virtualenv 和Fabric 被称为python 的三大神器,Pip 是包管理工具,Virt ...
- Windows下Python多版本共存
Windows下Python多版本共存 Python数据科学安装Numby,pandas,scipy,matpotlib等(IPython安装pandas) 0.0 因为公司项目,需要Python两个 ...
- Python多版本共存安装
Python的安装 进入Python官方网站:www.python.org下载系统对应的Python版本 按照提示步奏安装,安装路径选择自定义,方便查找 安装完成后,按win+R键,输入cmd进入cm ...
- 使用pyenv实现python多版本共存
背景 如果是Ubuntu等桌面系统,都已经更新到了Python较新的版本.但多数生产环境使用的还是红帽系统. CentOS7默认还是Python2.7,而开发环境如果是高版本Python就带来了问题. ...
随机推荐
- CNN学习笔记:激活函数
CNN学习笔记:激活函数 激活函数 激活函数又称非线性映射,顾名思义,激活函数的引入是为了增加整个网络的表达能力(即非线性).若干线性操作层的堆叠仍然只能起到线性映射的作用,无法形成复杂的函数.常用的 ...
- HDU - 6406 Taotao Picks Apples (RMQ+dp+二分)
题意:N个高度为hi的果子,摘果子的个数是从位置1开始从左到右的严格递增子序列的个数.有M次操作,每次操作对初始序列修改位置p的果子高度为q.每次操作后输出修改后能摘到得数目. 分析:将序列分为左.右 ...
- Python面试题之Super函数
这是个高大上的函数,在python装13手册里面介绍过多使用可显得自己是高手 23333. 但其实他还是很重要的. 简单说, super函数是调用下一个父类(超类)并返回该父类实例的方法. 这里的下一 ...
- 较常用的Math方法及ES6中的扩展
记录下与Math有关的常用方法,如:求最大值.最小值等,或者是保留几位数啥的 1.数据 let floatA = 2.325232; let floatB = 2.3456; let temporar ...
- MySQL数据库的主从同步复制配置
一.主从同步机制原理 MYSQL主从同步是在MySQL主从复制(Master-Slave Replication)基础上实现的,通过设置在Master MySQL上的binlog(使其处于打开状态), ...
- java中最常用jar包的用途
jar包用途 axis.jarSOAP引擎包commons-discovery-0.2.jar用来发现.查找和实现可插入式接口,提供一些一般类实例化.单件的生命周期管理的常用方法.jaxrpc.jar ...
- dotnet new vue [C# 使用 vuejs]
1. 安装 dotnet sdk 2.0 2. 安装 nodejs , npm 3. 安装淘宝镜像 4. 更新npm : npm update -g 5. dotnet new -i vue 6. ...
- Linux查看服务和强制结束服务
查看服务id命令,常用的两种: a: ps -ef | grep 服务名 b: netstat -antp 找到结果名称,然后 pki ...
- Spring boot 与mybatis 多数据源问题
https://www.cnblogs.com/ityouknow/p/6102399.html Spring Boot 集成Mybatis实现多数据源 https://blog.csdn.net/m ...
- NumPy Matplotlib库
NumPy - Matplotlib Matplotlib 是 Python 的绘图库. 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案. 它也可以和图形工具包一起使用,如 ...