使用pyenv管理不同版本的python

简介:

经常遇到这样的情况:

  • 系统自带的 Python 是 2.6,自己需要 Python 2.7 中的某些特性;

  • 系统自带的 Python 是 2.x,自己需要 Python 3.x;

此时需要在系统中安装多个 Python,但又不能影响系统自带的 Python,即需要实现 Python 的多版本共存。pyenv 就是这样一个 Python 版本管理器。

安装 pyenv

在终端执行如下命令以安装 pyenv 及其插件:

1
$ curl -L https: //raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash

安装完成后,根据提示将如下语句加入到 ~/.bashrc 中:

1
2
3
4
export PYENV_ROOT= "$HOME/.pyenv"
export PATH= "$PYENV_ROOT/bin:$PATH"
eval  "$(pyenv init -)"
eval  "$(pyenv virtualenv-init -)"    # 这句可以不加

然后重启终端即可。

安装 Python

查看可安装的版本

1
$ pyenv install --list

该命令会列出可以用 pyenv 安装的 Python 版本。列表很长,仅列举其中几个:

1
2
3
4
2.7 . 8    # Python  2  最新版本
3.4 . 1    # Python  3  最新版本
anaconda2- 4.1 . 0   # 支持 Python  2.6  和  2.7
anaconda3- 4.1 . 0   # 支持 Python  3.3  和  3.4

其中 2.7.8 和 3.4.1 这种只有版本号的是 Python 官方版本,其他的形如 anaconda2-4.1.0 这种既有名称又有版本后的属于 “衍生版” 或发行版。

安装 Python 的依赖包

在编译 Python 过程中会依赖一些其他库文件,因而需要首先安装这些库文件,已知的一些需要预先安装的库如下。

在 CentOS/RHEL/Fedora 下:

1
2
3
4
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下:

1
2
3
4
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

安装指定版本

用户可以使用 pyenv install 安装指定版本的 python。如果你不知道该用哪一个,推荐你安装 anaconda3 的最新版本,这是一个专为科学计算准备的发行版。

1
2
3
4
$ pyenv install anaconda3- 4.1 . 0  -v
/tmp/python-build. 20170108123450.2752  ~
Downloading Anaconda3- 4.1 . 0 -Linux-x86_64.sh...
-> https: //repo.continuum.io/archive/Anaconda3-4.1.0-Linux-x86_64.sh

执行该命令后,会从给定的网址中下载安装文件 Anaconda3-4.1.0-Linux-x86_64.sh。但由于文件很大,通常下载需要很久。建议的做法是,先执行以上命令然后马上中断安装,这样就知道 pyenv 要下载的文件的链接。然后用户自己用其他更快的方式(比如wget、迅雷等等)从该链接中下载安装文件,并将安装文件移动到 ~/.pyenv/cache 目录下(该目录默认不存在,用户要自行新建)。

以本文说的情况为例:

  1. 执行 pyenv install anaconda3-4.1.0 -v 获取下载链接

  2. 用wget从下载链接中获取文件 Anaconda3-4.1.0-Linux-x86_64.sh

  3. 将安装包移动到 ~/.pyenv/cache/Anaconda3-4.1.0-Linux-x86_64.sh

  4. 重新执行 pyenv install anaconda3-4.1.0 -v 命令。该命令会检查 cache 目录下已有文件的完整性,若确认无误,则会直接使用该安装文件进行安装。

安装过程中,若出现编译错误,通常是由于依赖包未满足,需要在安装依赖包后重新执行该命令。

更新数据库

在安装 Python 或者其他带有可执行文件的模块之后,需要对数据库进行更新:

1
$ pyenv rehash

查看当前已安装的 python 版本

1
2
3
$ pyenv versions
* system ( set  by /home/seisman/.pyenv/version)
anaconda3- 4.1 . 0

其中的星号表示当前正在使用的是系统自带的 python。

设置全局的 python 版本

1
2
3
4
$ pyenv global anaconda3- 4.1 . 0
$ pyenv versions
system
* anaconda3- 4.1 . 0  ( set  by /home/seisman/.pyenv/version)

当前全局的 python 版本已经变成了 anaconda3-4.1.0。也可以使用 pyenv local 或 pyenv shell 临时改变 python 版本。

确认 python 版本

1
2
3
4
5
$ python
Python  3.5 . 2  (Anaconda  4.1 . 0 , 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 安装第三方模块时会自动按照到当前的python版本下,不会和系统模块发生冲突。

  • 使用 pip 安装模块后,可能需要执行 pyenv rehash 更新数据库;

pyenv 其他功能

  1. pyenv uninstall 卸载某个版本

  2. pyenv update 更新 pyenv 及其插件

参考

  1. https://github.com/yyuu/pyenv

修订历史

  • 2013-10-04:初稿;

  • 2014-10-07:将 Python 依赖包一段的位置提前;

  • 2016-07-30:使用 pyenv-installer 安装;


转自转自: 

本文转自奔跑在路上博客51CTO博客,原文链接http://blog.51cto.com/qiangsh/1937184如需转载请自行联系原作者


qianghong000

相关文章
|
3月前
|
人工智能 Python
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
108 7
|
6月前
|
PyTorch Linux 算法框架/工具
pytorch学习一:Anaconda下载、安装、配置环境变量。anaconda创建多版本python环境。安装 pytorch。
这篇文章是关于如何使用Anaconda进行Python环境管理,包括下载、安装、配置环境变量、创建多版本Python环境、安装PyTorch以及使用Jupyter Notebook的详细指南。
707 1
pytorch学习一:Anaconda下载、安装、配置环境变量。anaconda创建多版本python环境。安装 pytorch。
|
4月前
|
Ubuntu Shell Linux
pyenv 管理多个 Python 版本(1)
pyenv 管理多个 Python 版本(1)
229 86
pyenv 管理多个 Python 版本(1)
|
4月前
|
Shell Python
使用 pyenv 来管理多个 Python 版本(2)
使用 pyenv 来管理多个 Python 版本(2)
170 71
使用 pyenv 来管理多个 Python 版本(2)
|
3月前
|
测试技术 Python
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
194 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
|
6月前
|
Python Windows
查看Python版本
【10月更文挑战第8天】查看Python版本
72 2
|
6月前
|
IDE 网络安全 开发工具
IDE之pycharm:专业版本连接远程服务器代码,并配置远程python环境解释器(亲测OK)。
本文介绍了如何在PyCharm专业版中连接远程服务器并配置远程Python环境解释器,以便在服务器上运行代码。
1105 0
IDE之pycharm:专业版本连接远程服务器代码,并配置远程python环境解释器(亲测OK)。
|
6月前
|
机器学习/深度学习 缓存 PyTorch
pytorch学习一(扩展篇):miniconda下载、安装、配置环境变量。miniconda创建多版本python环境。整理常用命令(亲测ok)
这篇文章是关于如何下载、安装和配置Miniconda,以及如何使用Miniconda创建和管理Python环境的详细指南。
1256 0
pytorch学习一(扩展篇):miniconda下载、安装、配置环境变量。miniconda创建多版本python环境。整理常用命令(亲测ok)
|
1月前
|
机器学习/深度学习 存储 设计模式
Python 高级编程与实战:深入理解性能优化与调试技巧
本文深入探讨了Python的性能优化与调试技巧,涵盖profiling、caching、Cython等优化工具,以及pdb、logging、assert等调试方法。通过实战项目,如优化斐波那契数列计算和调试Web应用,帮助读者掌握这些技术,提升编程效率。附有进一步学习资源,助力读者深入学习。