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进行版本管理. *** 通常 ...
随机推荐
- ASP.NET Core学习系列
.NET Core ASP.NET Core ASP.NET Core学习之一 入门简介 ASP.NET Core学习之二 菜鸟踩坑 ASP.NET Core学习之三 NLog日志 ASP.NET C ...
- 三, 练习 python索引 (list和tuple)
(1) 练习 请用索引取出下面list的指定元素: 1, # -*- coding: utf-8 -*- L = [ ['Apple', 'Google', 'Microsoft'], ['Java' ...
- vue请求网络图片403错误,图片有占位但是显示不出来解决办法
在index.html 增加一个meta标签 <meta name="referrer" content="no-referrer" />
- linux下c通过虚拟地址映射读写文件的代码
在代码过程中中,把开发过程中比较好的一些代码片段记录起来,如下的代码内容是关于 linux下c通过虚拟地址映射读写文件的代码,应该对小伙伴有些好处.#include<stdio.h>#in ...
- CISPA Scyther tools
1.Scyther软件作者网站的整理 Scyther工具的网站主页:https://people.cispa.io/cas.cremers/index.html 首先 对Scyther软件的资料进行整 ...
- python3 集合(set)
一.定义:集合是一个无序不重复元素序列 语法: #---------------两种写法-------------------------# parame = {value1,value2,value ...
- C#嵌入子窗体,判断子窗体是否打开了
/// <summary> /// 嵌入子窗体,判断子窗体是否打开了 /// </summary> public static Form1 f; public void For ...
- Mybaits入门使用
1.pom.xml配置信息 <dependencies> <dependency> <groupId>junit</groupId> <artif ...
- ***报错Class 'Redis' not found in(原创)
报错:Class 'Redis' not found in 这个报错,表明phpredis 扩展没有安装好,而不是redis没有安装 有没有安装成功这个扩展,可以通过phpinfo来查看. 解决问题的 ...
- go time模块
package main import ( "fmt" "time") func test() { time.Sleep(time.Millisecond * ...