python多版本管理工具(pyenv)
在学习和利用python开发的很多情况下,需要多版本的Python并存。此时需要在系统中安装多个Python,但又不能影响系统自带的 Python。pyenv 就是这样一个 Python 版本管理器。
一、 pyenv介绍
项目地址:https://github.com/pyenv/pyenv
简单的说,pyenv 可以根据需求使用户在系统里安装和管理多个 Python 版本:
- 配置当前用户的python的版本
- 配置当前shell的python版本
- 配置某个项目(目录及子目录)的python版本
配置多个虚拟环境
pyenv的工作原理:pyenv是利用系统环境变量PATH的优先级,劫持python的命令到pyenv上,根据用户所在的环境或目录,使用不同版本的python。
二、pyenv安装
系统环境:centos 7
- 安装git
yum -y install git
- 安装python所依赖的库文件
yum -y install gcc make patch openssl-devel sqlite-devel readline-devel gdbm-devel zlib-devel bzip2-devel
- 安装pyenv
curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
- 配置环境变量
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> .bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> .bash_profile
echo 'eval "$(pyenv init -)"' >> .bashrc
source .bash_profile
三、pyenv的使用
查看pyenv支持的python版本,同时也是检查pyenv有没有安装成功
pyenv install --list
使用pyenv安装python
pyenv -v install 3.6.6
由于这个命令从国外网站下载python的过程比较慢。我们可以在.pyenv/目录创建一个cache目录,并将事先准备好的对应版本python包上传至该目录。
查看pyenv可检测到的版本,*标示的为当前状态下的激活版本
[root@localhost ~]# pyenv versions
* system (set by /root/.pyenv/version)
3.6.6
切换python版本
pyenv可以从三个维度来管理python环境,简称为:当前系统、当前目录、当前shell。这三个维度的优先级从左往右依次升高,即当前系统的优先级最低、当前shell的优先级最高。
如果想修改系统全局的Python环境,可以采用 pyenv global PYTHON_VERSION 命令。该命令执行后会在 $(pyenv root) 目录(默认为 ~/.pyenv )中创建一个名为 version 的文件(如果该文件已存在,则修改该文件的内容),里面记录着系统全局的Python版本号。
[root@localhost ~]# pyenv global 3.6.6
[root@localhost ~]# pyenv versions
system
* 3.6.6 (set by /root/.pyenv/version)
对于特定的项目,我们可能需要切换不同的Python环境,这个时候就可以通过 pyenv local PYTHON_VERSION 命令来修改 当前目录 的Python环境。命令执行后,会在当前目录中生成一个 .python-version 文件(如果该文件已存在,则修改该文件的内容),里面记录着当前目录使用的Python版本号。
[root@localhost python]# pyenv local 3.6.6
[root@localhost python]# cat .python-version
3.6.6
通过执行 pyenv shell PYTHON_VERSION 命令,可以修改 当前shell 的Python环境。执行该命令后,会在当前 shell session (Terminal窗口)中创建一个名为 PYENV_VERSION 的环境变量,然后在 当前shell 的任意目录中都会采用该环境变量设定的Python版本。此时, global 和 local中设定的Python版本均会被忽略。
[root@localhost python]# pyenv shell system
[root@localhost python]# echo $PYENV_VERSION
system
退出shell有两个方法,一个是重新打开一个shell,一个就是 pyenv shell --unset(退到了之前global的环境)
[root@localhost python]# pyenv shell --unset
[root@localhost python]# pyenv version
3.6.6 (set by /root/python/.python-version)
创建虚拟环境
Python应用程序通常会使用不在标准库内的软件包和模块。应用程序有时需要特定版本的库,因为应用程序可能需要修复特定的错误,或者可以使用库的过时版本的接口编写应用程序。
这意味着一个Python安装可能无法满足每个应用程序的要求。如果应用程序A需要特定模块的1.0版本但应用程序B需要2.0版本,则需求存在冲突,安装版本1.0或2.0将导致某一个应用程序无法运行。
解决这个问题的方案是创建一个
virtual environment,一个目录树,其中安装有特定python版本,以及许多其他包。使用pyenv创建虚拟环境
[root@localhost python]# pyenv virtualenv 3.6.6 django
[root@localhost python]# pyenv versions
system
* 3.6.6 (set by /root/python/.python-version)
3.6.6/envs/django
django
python环境目录
我们在
/root/.pyenv/versions看到我们装的python版本[root@localhost versions]# ll
总用量 0
drwxr-xr-x. 7 root root 68 4月 11 17:25 3.6.6
lrwxrwxrwx. 1 root root 39 4月 11 17:25 django -> /root/.pyenv/versions/3.6.6/envs/django
并且可以发现我们创建的虚拟环境django其实是对应python版本目录下的一个软链接。
四、修改pip源
有时候我们使用
pip安装比较大的第三方模块速度会非常的慢甚至还会失败,是因为pip从默认从国外的pip源下载文件。我们可以通过修改pip源的方式提升pip安装速率。cd ~
mkdir .pip.conf vim .pip.conf
[global]
index-url=https://mirrors.aliyun.com/pypi/simple/
trusted-host=mirrors.aliyun.com
这样
pip命令就会从阿里的pip源上第三方模块了,当然也可以在安装的时候通过-i参数来指定pip源。pip install scipy -i https://pypi.douban.com/simple/
查看当前环境安装包名字
pip freeze
pip list
pip命令-r参数安装requirement.txt文件上的所有包pip freeze > ./requirement.txt
pip isntall -r ./requirement.txt
python多版本管理工具(pyenv)的更多相关文章
- 你应该学会的Python多版本管理工具Pyenv
目录 Pyenv 简介 安装pyenv 通过pyenv安装python各种发行版 pyenv命令 多版本Python的管理 Pyenv常见问题Wiki Pyenv 简介 首先,该工具是在类linux环 ...
- Ubuntu中python多版本管理工具-pyenv
ubuntu系统版本:16.04 # lsb_release -aNo LSB modules are available.Distributor ID: UbuntuDescription: Ubu ...
- python版本管理工具pyenv和包管理工具pipenv
一.pyenv版本管理工具 pyenv是一个python版本管理工具,可以实现轻松切换多个python版本 它可根据每个用户更改全局python版本,也可以为每个项目指定python版本,还可以管理v ...
- Python切换版本工具pyenv
目录 安装pyenv 安装与查看py版本 切换py版本 结合ide使用示例 和virtualenv的一些区别 参考文献 使用了一段时间,我发现这玩意根本不是什么神器,简直就是垃圾,安装多版本总是失败, ...
- 腾讯云服务器ubuntu16.04系统下安装Python版本管理工具pyenv
一. 系统环境 腾讯云提供的系统是ubuntu 16.04 LTS,系统默认的Python版本是2.7.12,我想要安装3.6和其他的版本. 比较方便的是腾讯云已经默认安装好了git和curl ...
- Ubuntu安装Python版本管理工具pyenv
gyf@gyf-VirtualBox:~$ git clone https://github.com/yyuu/pyenv.git ~/.pyenvCloning into '/home/gyf/.p ...
- Python多版本管理器-pyenv 介绍及部署记录
一. pyenv简单介绍 在日常运维中, 经常遇到这样的情况: 系统自带的Python是2.x,而业务部署需要Python 3.x 环境, 此时需要在系统中安装多个Python版本,但又不能影响系统自 ...
- centos下python多版本管理(pyenv+python+virtualenv+ipython)
pyenv是个多版本python管理器,可以同时管理多个python版本共存,如pypy,miniconde等等 1 环境准备 安装相关软件和pyenv1.1 安装相关软件yum install -y ...
- 在Ubuntu 18.04中安装pyenv(Python多版本管理工具)
最近正在重头梳理Python的基础知识,为了更好地使用Python进行开发,防止发生版本混乱(不同的第三方库有可能因为Python版本不兼容而报错),所以需要使用pyenv进行版本管理. *** 通常 ...
随机推荐
- insert主键返回 selectKey使用
有时候新增一条数据,知道新增成功即可,但是有时候,需要这条新增数据的主键,以便逻辑使用,再将其查询出来明显不符合要求,效率也变低了. 这时候,通过一些设置,mybatis可以将insert的数据的主键 ...
- Java虚拟机学习笔记——JVM垃圾回收机制
Java虚拟机学习笔记——JVM垃圾回收机制 Java垃圾回收基于虚拟机的自动内存管理机制,我们不需要为每一个对象进行释放内存,不容易发生内存泄漏和内存溢出问题. 但是自动内存管理机制不是万能药,我们 ...
- JAVA第二次实训作业
1.一维数组的创建和遍历. 声明并创建存放4个人考试成绩的一维数组,并使用for循环遍历数组并打印分数. 要求: 首先按“顺序”遍历,即打印顺序为:从第一个人到第四个人: 然后按“逆序”遍历,即打印顺 ...
- Java_面向对象
目录 一.封装 二.继承 三.多态 四.重载与重写 五.接口与抽象类 六.继承与组合 七.初始化块 面向对象的三大特征:封装.继承.多态. 一.封装 是指将对象的状态信息都隐藏在对象内部,不允许外部程 ...
- 三丶JavaScript 的基础学习(一)
知识预览 BOM对象 DOM对象(DHTML) 8 实例练习 JavaScript概述 JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言 ...
- linux 服务器常用命令整理
linux 服务器常用命令整理 目录 网络分析 - tcpdump \ telnet \ (netstat \ ss \ lsof) \ nload 网络传输 - scp \ rsync \ (rz ...
- 初探storm
Storm入门之Storm示例及UI参数讲解 Storm UI REST API Storm 1.1.0 中文文档 Apache Storm 1.1.0 中文文档 | ApacheCN Storm U ...
- IntelliJ IDEA 2018.3.3配置 Tomcat 9,控制台出现中文乱码 “淇℃伅”(2019/01/25)
(win10系统) 全新idea配置全新版本Tomcat突遇 “淇℃伅”,网上大部分解决方案均已失效 似乎是idea与Tomcat命令行输出格式不一致所致,千辛万苦在某一小角落发现这个方法,一针见血, ...
- hbase 问题整理
阅读本文可以带着下面问题:1.HBase遇到问题,可以从几方面解决问题?2.HBase个别请求为什么很慢?你认为是什么原因?3.客户端读写请求为什么大量出错?该从哪方面来分析?4.大量服务端excep ...
- 20165235 实现pwd功能
20165235 实现pwd功能 要求 学习pwd命令 2.研究pwd实现需要的系统调用(man -k; grep),写出伪代码 3.实现mypwd 测试mypwd 实现过程 pwd是将当前的文件目录 ...