pyenv简介——Debian/Ubuntu中管理多版本Python

MAY 21ST, 2016 12:00 AM | COMMENTS

pyenv是管理Python版本的工具,它支持在多个Python版本间切换。

一、安装pyenv

1
git clone https://github.com/yyuu/pyenv.git ~/.pyenv

PYENV_ROOTpyenv init加入bash的~/.bashrc(或zsh的~/.zshrc)

1
2
3
echo 'export PATH=~/.pyenv/bin:$PATH' >> ~/.bashrc
echo 'export PYENV_ROOT=~/.pyenv' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc

二、pyenv常用命令

列表可安装的Python版本

1
pyenv install -l

除了Python官方版本,还支持

  • anaconda
  • ironpython
  • jython
  • miniconda
  • pypy
  • stackless

安装指定版本的Python

1
2
pyenv install 3.5.1
pyenv rehash

它会自动下载并编译指定版本的Python源码,这需要系统安装:

1
sudo apt-get install -y build-essential zlib1g-dev libssl-dev

还可选择安装:

1
sudo apt-get install libsqlite3-dev libbz2-dev  libreadline-dev

安装完成后:

  • 源码(如~/Python-3.5.1.tar.gz)缓存在.pyenv/cache目录中,在安装完后可手动删除。
  • Python版本安装在~/.pyenv/versions目录中。

卸载指定版本的Python

1
pyenv unstall 3.5.1

设置shell的Python版本

1
pyenv shell 3.5.1

等同于

1
export PYENV_VERSION=3.5.1

清除PYENV_VERSION

1
pyenv shell --unset

三、安装pyenv-virtualenv

pyenv-virtual是pyenv的插件,它支持管理多个virtualenv

1
2
git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile

创建virtualenv

1
pyenv virtualenv 3.5.1 aiohttp-virtual-env
  • 创建aiohttp-virtual-env之前,须先安装Python 3.5.1(通过系统或pyenv安装)。
  • aiohttp-virtual-env存储在~/.pyenv/versions/3.5.1/envs目录中,且在~/.pyenv/versions目录中建立同名符号链接。

删除virtualenv

1
pyenv uninstall aiohttp-virtual-env

列表virtualenv

1
pyenv virtualenvs

激活/禁用virtualenv

1
2
pyenv activate aiohttp-virtual-env
pyenv deactivate

pyenv简介——Debian/Ubuntu中管理多版本Python的更多相关文章

  1. ubuntu中 不同JDK版本之间的切换

    Ubuntu中JDK 的切换前提是同时安装了多个版本,如jdk7和jdk8,若要切换,在终端输入: sudo update-alternatives --config java sudo update ...

  2. ubuntu下安装多版本Python

    今天一不小心又把ubuntu系统给完坏了,因为我把python3卸载了,然后就...好了,不废话了,接下来就说一下如何在ubuntu下管理python的多个版本.我这里使用的是一个叫pyenv的Pyt ...

  3. 如何在Anaconda中实现多版本python共存

    anaconda中Python版本是3.5,因为爬虫原因,需要Python2.7版本,因此,希望能在anaconda中Python3和Python2共存. 1. 打开Anaconda Prompt,可 ...

  4. 在ubuntu中配置深度学习python图片分类实验环境

    1 安装numpy,scipy, matplotlib, sudo apt-get install python-numpy sudo apt-get install python-scipy sud ...

  5. 使用 pyenv 可以在一个系统中安装多个python版本

    Installl related yum install readline readline-devel readline-static -y yum install openssl openssl- ...

  6. 【Ubuntu】Ubuntu中下载特定版本内核和设置某版本内核为默认启动内核

    0. 基本命令 uname -a # 查看当前所使用内核 dpkg -l | grep linux # dpkg后是lmn的l.查看当前操作系统的内核 dekg -l | grep linux-ima ...

  7. Ubuntu 中查看内核版本和系统版本的三个命令

    一.查看内核版本:cat /proc/version 二.查看内核版本:uname -a 三.查看系统版本:lsb_release -a 四.查看发行版类型:cat /etc/issue

  8. Ubuntu 中查看内核版本和系统版本的四个命令

    一.查看内核版本:cat /proc/version 二.查看内核版本:uname -a 三.查看系统版本:lsb_release -a 四.查看发行版类型:cat /etc/issue

  9. linux下快速安装pyenv管理多版本python

    起因 一直服务器python项目都是放docker跑,这次为了测试,不得不在宿主机跑,就必须安装python3.7,但是ubuntu16.04下有点麻烦 尝试 源码安装,懒,算了,也不想污染服务器环境 ...

随机推荐

  1. 【宽搜】Vijos P1051 送给圣诞夜的极光

    题目链接: https://vijos.org/p/1051 题目大意: 给一张‘-’和‘#’的图,规定曼哈顿距离小于等于2的‘#’属于同一图案,求图案数.[曼哈顿距离:对于A(x1,y1)和B(x2 ...

  2. 自定义VIew——漂亮的圆形进度条

    package com.example.firstapp; import java.text.DecimalFormat; import android.annotation.SuppressLint ...

  3. 乱译文档--开始使用Musca

    原文地址:http://aerosuidae.net/musca_start.html aerosuidae.net Musca - Start Using startx Launch it from ...

  4. JDK 和JRE的区别

    JRE:Java Runtime Environment/Java运行时环境目标用户:只需要运行Java程序的用户JRE包含了:Deployment,User Interface Toolkits,I ...

  5. M - 小希的迷宫

    跟N题是一样的,不过会爆栈,有两种解决办法,第一种加 #pragma comment(linker, "/STACK:102400000,102400000") 这一行代码,不过只 ...

  6. iOS面试贴士

    iOS面试小贴士 ———————————————回答好下面的足够了------------------------------------- 多线程.特别是NSOperation 和 GCD 的内部原 ...

  7. jvm之内存分配与回收策略

    1.java堆中各代分布 (1)Young:主要是用来存放新生的对象. (2)Old:主要存放应用程序中生命周期长的内存对象. (3)Permanent:是指内存的永久保存区域,主要存放Class和M ...

  8. JQuery属性过滤(转)

    属性过滤(Attribute Filters)的内容就是html元素中的属性 其包括以下几个选择器: [attribute] [attribute=value] [attribute!=value] ...

  9. Cocoa Touch 层

    Cocoa Touch层包含创建 iOS应用程序所需的关键框架.上至实现应用程序可视界面,下至与高级系统服务交互,都需要该层技术提供底层基础.在开发应用程序的时候,请尽可能不要使用更底层的框架,尽可能 ...

  10. 适配ios7

    if ([self respondsToSelector:@selector(edgesForExtendedLayout)]) { self.edgesForExtendedLayout = UIR ...