对Python 两大环境管理神器 pyenv 和 virtualenv详解


Posted in Python onDecember 31, 2018

简介

pyenv 是一个开源的 Python 版本管理工具,可以轻松地给系统安装任意 Python 版本,想玩哪个版本,瞬间就可以切换。有了 pyenv,我们不需要再为系统多版本 Python 共存问题而发愁,也不用为手动编译安装其他 Python 版本而浪费时间,只需要执行一条简单的命令就可以切换并使用任何其他版本,该工具真正地做到了开箱即用,简单实用。

virtualenv 是一个用来创建完全隔离的 Python 虚拟环境的工具,可以为每个项目工程创建一套独立的 Python 环境,从而可以解决不同工程对 Python 包,或者版本的依赖问题。假如有 A 和 B 两个工程,A 工程代码要跑起来需要 requests 1.18.4,而 B 工程跑起来需要 requests 2.18.4,这样在一个系统中就无法满足两个工程同时运行问题了。最好的解决办法是用 virtualenv 给每个工程创建一个完全隔离的 Python 虚拟环境,给每个虚拟环境安装相应版本的包,让程序使用对应的虚拟环境运行即可。这样既不影响系统 Python 环境,也能保证任何版本的 Python 程序可以在同一系统中运行。

最佳实践:使用 pyenv 安装任何版本的 Python,然后用 virtualenv 创建虚拟环境时指定需要的 Python 版本路径,这样就可以创建任何版本的虚拟环境,这样的实践真是极好的!

pyenv 的安装及使用

1. 安装

将 pyenv 安装到 ~/.pyenv 目录(当然你可以安装到任意其他路径)

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

配置环境变量(我的 Shell 是 zsh,如果是 bash,请添加到 ~/.bashrc)

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc

添加 pyenv 初始化(我的 Shell 是 zsh,如果是 bash,请添加到 ~/.bashrc)

echo 'eval "$(pyenv init -)"' >> ~/.zshrc

使当前 Shell 配置生效,完成安装

exec $SHELL
source ~/.zshrc

2. 使用

查看有哪些 Python 版本可以安装

pyenv install --list

安装某个 Python 版本

pyenv install -v 3.6.4

查看当前 Python 版本情况(* 表示系统当前的 Python 版本,system表示系统初始版本)

$ pyenv versions
 system
 2.6.7
* 3.6.4 (set by /Users/haohao/.pyenv/version)

切换 Python 版本(切换之后查看当前版本)

$ pyenv global 3.6.4
$ pyenv versions
 system
* 3.6.4 (set by /Users/haohao/.pyenv/version)
$ python -V
Python 3.6.4

卸载某个 Python 版本

pyenv uninstall 3.6.4

virtualenv 的安装及使用

1. 安装

sudo pip install virtualenv

2. 使用

下面我们使用 virtualenv 创建一个完全隔离的 Python 虚拟环境:

1.新建一个目录(一般用来用作工程路径)

$ mkdir myproject

2.进入目录创建一个完全独立干净的虚拟环境

如果 virtualenv 后面不加任何参数,那么默认创建的虚拟环境的 Python 版本是系统当前版本,如果要创建其他版本,可以使用 -p 参数指定其他版本的 python 可执行文件路径。可执行文件可以在上一步安装的 pyenv 的 ~/.pyenv/versions 路径找到,该路径是 pyenv 管理的所有 Python 版本路径。

# 使用系统当前的 Python 版本创建虚拟环境
$ virtualenv venv
New python executable in /Users/haohao/PycharmProjects/myproject/venv/bin/python
# 创建虚拟环境时指定 Python 版本
$ virtualenv -p ~/.pyenv/versions/2.6.7/bin/python venv
Running virtualenv with interpreter /Users/haohao/.pyenv/versions/2.6.7/bin/python
New python executable in /Users/haohao/PycharmProjects/myproject/venv/bin/python
Installing setuptools<37, pip, wheel<0.30...done.

3.激活创建的虚拟环境并使用

可以看出当前虚拟环境版本已经是 Python 2.6.7 了,而且所在路径确实是在上一步创建的虚拟环境路径。接下来使用 pip 安装的任何包都会安装在虚拟环境目录里面,不会安装在系统标准目录,从而保证当前环境是绝对干净的,对于系统是完全隔离的。

$ source venv/bin/activate
$ which python
/Users/haohao/PycharmProjects/myproject/venv/bin/python
$ python -V
Python 2.6.7

4.退出虚拟环境,回到系统版本

$ deactivate

以上这篇对Python 两大环境管理神器 pyenv 和 virtualenv详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python Web框架Pylons中使用MongoDB的例子
Dec 03 Python
轻松掌握python设计模式之策略模式
Nov 18 Python
浅谈python中requests模块导入的问题
May 18 Python
python 利用栈和队列模拟递归的过程
May 29 Python
python实现淘宝秒杀脚本
Jun 23 Python
解决python flask中config配置管理的问题
Jul 26 Python
Python使用Slider组件实现调整曲线参数功能示例
Sep 06 Python
python编写计算器功能
Oct 25 Python
Python响应对象text属性乱码解决方案
Mar 31 Python
Django如何使用jwt获取用户信息
Apr 21 Python
python实现简单遗传算法
Sep 18 Python
Python开发.exe小工具的详细步骤
Jan 27 Python
python 实现得到当前时间偏移day天后的日期方法
Dec 31 #Python
利用python修改json文件的value方法
Dec 31 #Python
python 提取tuple类型值中json格式的key值方法
Dec 31 #Python
python 提取key 为中文的json 串方法
Dec 31 #Python
Python判断是否json是否包含一个key的方法
Dec 31 #Python
pyshp创建shp点文件的方法
Dec 31 #Python
解决python ogr shp字段写入中文乱码的问题
Dec 31 #Python
You might like
使用swoole扩展php websocket示例
2014/02/13 PHP
PHP速成大法
2015/01/30 PHP
PHP中把错误日志保存在系统日志中(Windows系统)
2015/06/23 PHP
PHP常用字符串操作函数实例总结(trim、nl2br、addcslashes、uudecode、md5等)
2016/01/09 PHP
ecshop适应在PHP7的修改方法解决报错的实现
2016/11/01 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
2017/11/13 PHP
Laravel框架生命周期与原理分析
2018/06/12 PHP
浅谈laravel数据库查询返回的数据形式
2019/10/21 PHP
jQuery之字体大小的设置方法
2014/02/27 Javascript
jqGrid中文文档之选项设置
2015/12/02 Javascript
浅谈js在html中的加载执行顺序,多个jquery ready执行顺序
2016/11/26 Javascript
Vue.js计算属性computed与watch(5)
2016/12/09 Javascript
vue跨域解决方法
2017/10/15 Javascript
VSCode插件安装完成后的配置(常用配置)
2020/08/24 Javascript
Python使用Matplotlib实现雨点图动画效果的方法
2017/12/23 Python
快速解决pandas.read_csv()乱码的问题
2018/06/15 Python
Python代码打开本地.mp4格式文件的方法
2019/01/03 Python
Python3解释器知识点总结
2019/02/19 Python
Python面向对象进阶学习
2019/05/21 Python
Python3内置模块random随机方法小结
2019/07/13 Python
python数据归一化及三种方法详解
2019/08/06 Python
Python使用matplotlib 模块scatter方法画散点图示例
2019/09/27 Python
python字典排序的方法
2019/10/12 Python
用Python实现定时备份Mongodb数据并上传到FTP服务器
2021/01/27 Python
Speedo速比涛法国官方网站:泳衣、泳镜、泳帽、泳裤
2019/07/30 全球购物
文秘专业自荐信
2013/10/14 职场文书
英文演讲稿
2014/05/15 职场文书
安全标语大全
2014/06/10 职场文书
大学生志愿者活动总结
2014/06/27 职场文书
优秀团员事迹材料2000字
2014/08/20 职场文书
单位介绍信格式范文
2015/05/04 职场文书
2015年会计人员工作总结
2015/05/22 职场文书
2015新教师教学工作总结
2015/07/22 职场文书
2015年公司国庆放假通知
2015/07/30 职场文书
HR在给员工开具离职证明时,需要注意哪些问题?
2019/07/03 职场文书
Redis实现订单过期删除的方法步骤
2022/06/05 Redis